Második labor: vektornormák és indukált mátrixnormák

Contents

A ":" operátort számokból álló vektor létrehozására használhatjuk. Elsõ szám: kezdõpont, második szám: lépésköz, harmadik szám végpont (illetve az az érték amit a végpont nem haladhat meg)

x=0:0.3:1 %ez egy sorvektor
x =

         0    0.3000    0.6000    0.9000

Ez a típusán és az elfoglalt helyen is látszik

whos
  Name           Size            Bytes  Class     Attributes

  A              5x5               200  double              
  C              3x3                72  double              
  D              4x4               128  double              
  E              2x3                48  double              
  I              5x5               200  double              
  Z              5x2                80  double              
  ans            1x1                 8  double              
  x              1x4                32  double              
  x_oszlop      12x1                96  double              
  x_sor          1x4                32  double              
  y_sor          1x5                40  double              

A sorvektor egyes elemeit a () segítségével érjük el, a sorszámozás 1-el kezdõdik

x(1)
x(2)
% de x(6)!
ans =

     0


ans =

    0.3000

értékadásnál nagyon oda kell figyelnünk, mert:

x(6)=5
x =

         0    0.3000    0.6000    0.9000         0    5.0000

sõt

x_sor(12)=5
x_sor =

  Columns 1 through 7

         0    0.3000    0.6000    0.9000         0         0         0

  Columns 8 through 12

         0         0         0         0    5.0000

az aposztróf a transzponálás jele

x_oszlop=x_sor'
x_oszlop =

         0
    0.3000
    0.6000
    0.9000
         0
         0
         0
         0
         0
         0
         0
    5.0000

Másik lehetõség vektor létrehozására: egyenlõ osztásközû sorvektor, a harmadik számnyi elemmel

y_sor=linspace(1,2,5)
y_sor =

    1.0000    1.2500    1.5000    1.7500    2.0000

Mûveletek vektorokkal

x_sor=0:0.3:1
x_sor =

         0    0.3000    0.6000    0.9000

x vektor elemeinek száma

length(x_sor)
ans =

     4

Méret. Nem mindegy, hogy 1*4 (sorvektor) vagy 4*1 (oszlopvektor)

size(x_sor)
ans =

     1     4

size(x_oszlop)
ans =

    12     1

konstanssal való szorzás

5*x
ans =

         0    1.5000    3.0000    4.5000         0   25.0000

skaláris szorzat, azaz egy szám

x*x'
ans =

   26.2600

van rá külön parancs is a dot

dot(x,x)
ans =

   26.2600

diádszorzat

D=x_sor'*x_sor
D =

         0         0         0         0
         0    0.0900    0.1800    0.2700
         0    0.1800    0.3600    0.5400
         0    0.2700    0.5400    0.8100

az x vektor elemenkénti négyzete, általában is a pont az elemenkénti mûveletet jelenti.

x_sor.*x_sor
ans =

         0    0.0900    0.3600    0.8100

Nézzük csak meg a méreteket:

size(D)
ans =

     4     4

length(D)
ans =

     4

A vektorok p normáját a norm paracs segítségével kérdezhetjük le

norm(x)
norm(x,2)
norm(x,1)
norm(x,'inf')
ans =

    5.1245


ans =

    5.1245


ans =

    6.8000


ans =

     5

Mátrixok megadása

Elemenként: A sorok közé ; kell, a mátrix voltaképpen egy (sor)vektorokból álló (oszlop)vektor

C=[1 0 3; 4 3 -1; 3 -5 8] % itt az 1 0 3 az elsõ sor,
C =

     1     0     3
     4     3    -1
     3    -5     8

vagy elõre definiált függvényekkel: olyan matrix aminek diagonálisa a bemenetként kapott vektor

A=diag(y_sor)
A =

    1.0000         0         0         0         0
         0    1.2500         0         0         0
         0         0    1.5000         0         0
         0         0         0    1.7500         0
         0         0         0         0    2.0000

5*5-os egység mátrix

I=eye(5)
I =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

csupa 0-t tartalmazó 5*2-os mátrix

Z=zeros(5,2)
Z =

     0     0
     0     0
     0     0
     0     0
     0     0

csupa egyet

E=ones(2,3)
E =

     1     1     1
     1     1     1

a mátrix mérete

size(C)
ans =

     3     3

sorainak száma

size(C,1)
ans =

     3

oszlopainak a száma

size(C,2)
ans =

     3

a sorainak és oszlopainak száma közül a nagyobb (vektor esetén a hossz)

length(C)
ans =

     3

Mátrixok indexelése

C
C =

     1     0     3
     4     3    -1
     3    -5     8

egy konkrét elem lekérdezése (3. sor 2. oszlop)

C(3,2)
ans =

    -5

oszlopfolytonosan számítva a 6. elem

C(6)
ans =

    -5

Elsõ sor lekérése

C(1,:)
ans =

     1     0     3

ez itt a felsõ 2*2-es mátrix

C(1:2,1:2)
ans =

     1     0
     4     3

Ez pedig C minden második oszlopa

C(:,1:2:3)
ans =

     1     3
     4    -1
     3     8

az indukált mátrixnormát szintén a norm parancs adja meg

norm(C)
norm(C,2)
norm(C,1)
norm(C,'inf')
norm(C,'fro')
ans =

   10.3412


ans =

   10.3412


ans =

    12


ans =

    16


ans =

   11.5758

Órai feladatok

Első feladat: Készítsünk olyan függvényt, amelynek bemenete egy mátrix, és kiszámítja a gyakorlaton definiált "összes elem abszolútértékének maximuma" normát, illetve az 1-es és a sup normát a norm() függvény használata nélkül!

function [ki ki2 ki3]=mxNorma(A)

ki=max(max(abs(A)));
ki2=max(sum(abs(A))); % 1 norma
ki3=max(sum(abs(A')));% sup norma 

Második feladat: készítsünk olyan függvényt, ami ábrázolja a bemenetként kapott mátrix Gersgorin-köreit.

function gerg1(C)

hold on % Rárajzol az előző ábrára
for i=1:size(C,1)
    kozeppont=C(i,i);    
    sugar=sum(abs(C(i,:)))-abs(kozeppont);
    
    t=linspace(0,2*pi);
    plot(sugar*cos(t)+real(kozeppont), sugar*sin(t)+imag(kozeppont),'b'); % Körök kirajzolása kék színnel
end

sajatert=eig(C);
plot(real(sajatert),imag(sajatert),'r*'); % sajátértékek piros *-al

A függvény használata:

gerg1(C)