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

Contents

Vektorok és mátrixok létrehozása

Elemenként: szögletes zárójelben a sorvektort, az elemek közé , vagy semmi.

v=[1 2 4];

;-el elválasztva az oszlopvektort:

w=[5 ; 6 ; -1]
w =

     5
     6
    -1

Mátrixok esetén 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]
C =

     1     0     3
     4     3    -1
     3    -5     8

itt az 1 0 3 az első sor,

Vagy lehet előre definiált függvényekkel:

Olyan mátrix aminek diagonálisa (főátlója) a bemenetként kapott vektor

A=diag(v)
A =

     1     0     0
     0     2     0
     0     0     4

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(E,1)
ans =

     2

oszlopainak a száma

size(E,2)
ans =

     3

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

length(E)
ans =

     3

Számokból álló sorvektor létrehozására használhatjuk a : operátort a:b:c módon. Első szám: kezdőérték, második szám: lépésköz, harmadik szám végpont (pontosabban az az érték amit a végpont nem haladhat meg). Például:

x=0:0.3:1
x =

         0    0.3000    0.6000    0.9000

Ez egy sorvektor

whos
  Name      Size            Bytes  Class     Attributes

  A         3x3                72  double              
  C         3x3                72  double              
  E         2x3                48  double              
  I         5x5               200  double              
  Z         5x2                80  double              
  ans       1x1                 8  double              
  v         1x3                24  double              
  w         3x1                24  double              
  x         1x4                32  double              

Másik lehetőség sorvektor 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

Vigyázat a Matlab megkülönbözteti a sor- és oszlopvektorokat!

Indexelés

A sorvektor egyes elemeit a () segítségével indexelhetjük, 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

x2(12)=5
x2 =

     0     0     0     0     0     0     0     0     0     0     0     5

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

Norma és kondíciószám

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

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

a kondíciószámot pedig a cond parancs

cond(C)
cond(3*C)
ans =

    7.9188


ans =

    7.9188

cond(C,1)
cond(C',1)
ans =

   14.6471


ans =

   11.5294

Sajátértékek

A mátrix sajátértéket egyetlen vektorban az eig parancs segítségével kaphatjuk meg

eig(A)
ans =

     1
     2
     4

a sajáértékek lekérdezéséhez két kimenetettel hívjuk meg az eig függvényt:

[se,sv]=eig(A)
se =

     1     0     0
     0     1     0
     0     0     1


sv =

     1     0     0
     0     2     0
     0     0     4

ekkor a spektálfelbontását is elkészíthetjük a mátrixnak

sv*se*inv(sv)
ans =

     1     0     0
     0     1     0
     0     0     1

Gersgorin körök

Az alábbi függvények kirajzolja a mátrix Gersgorin-köreit és mellé a sajátértékeket is:

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

Használatával mutathatunk példát olyan mátrixra, amelynek van üres köre:

C=[0 0.5 1; 3 0 0; 0 0.1 -2]
gerg1(C)
C =

         0    0.5000    1.0000
    3.0000         0         0
         0    0.1000   -2.0000