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)
