PPEL_4_cviceni_MATLAB.txt %------------------------------------% 4. cvičení z předmětu PPEL - MATLAB %------------------------------------% Lenka Šroubová, ZČU, FEL, KTE % e-mail:
[email protected] %------------------------------------%--------------------% Práce s vektory %--------------------a=[1:5] a = 1
% zadání vektoru a 2
3
4
5
sum(a) ans = 15
% součet hodnot všech prvků ve vektoru a
cumsum(a) ans = 1
% kumulativní součet - součet prvků se všemi předchůdci 3
6
10
15
prod(a) ans = 120
% součin hodnot všech prvků ve vektoru a
cumprod(a) ans = 1 2
% kumulativní součin - součin prvků se všemi předchůdci
diff(a) ans = 1
% diference - rozdíly mezi sousedními prvky vektoru a 1
6
1
24
120
1
b=[-3,0,5,4,9] b = -3 0
% zadání vektoru b
diff(b) ans = 3
% diference - rozdíly mezi sousedními prvky vektoru b 5
5
-1
4
9
5
c=3+4i;
% zadání komplexního čísla
real(c) ans =
% reálná část komplexního čísla
3 imag(c) ans =
% imaginární část komplexního čísla
4 d=conj(c) % komplexně sdružené číslo k číslu c d = 3.0000 - 4.0000i disp(d) % výpis na obrazovku bez názvu proměnné, není možno formátovat 3.0000 - 4.0000i %-----------------------------% Operace s maticemi a vektory %-----------------------------A=[1,2;3,4] A =
% matice A má 2 řádky a 2 sloupce Stránka 1
PPEL_4_cviceni_MATLAB.txt 1 3
2 4
B=[5,6;7,8] B = 5 6 7 8
% matice B má 2 řádky a 2 sloupce
A'
% transpozice matice A (kdyby A obsahovala komplexní čísla, % vznikla by konjungovaná matice, tj. transponovaná % s komplexními čísly)
ans = 1 2
3 4
A.'
% prostá transpozice matice A, % u matic s reálnými čísly A.' a A' stejné
ans = 1 2
3 4
inv(A) ans =
% inverzní matice k matici A -2 1.5
1 -0.5
diag(A) ans = 1 4
% hlavní diagonála matice A
det(A)
% determinant matice A, jen pro čtvercové matice % výpočet det(A) = 1*4 - 2*3 = -2
ans = -2 %--------------------------------------------------------------------% operace + - .* ./ .\ .^ jsou operace, které probíhají po prvcích % pro operace + - .* ./ .\ musí mít matice stejný rozměr, % tj.stejný počet řádků a sloupců % výsledek má také stejnou velikost, tj. stejný počet řádků i sloupců %--------------------------------------------------------------------A+B
% sčítání matic A,B prvek po prvku % sečtou se stejnolehlé prvky v maticích
ans = 6 10
8 12
B+A ans =
% sčítání matic je komutativní, výsledné matice jsou stejné
6 10 A-B ans = -4 -4
8 12 % odčítání matic A,B prvek po prvku -4 -4
B-A ans =
% odčítání matic není komutativní 4 4
C=A.*B
4 4 % násobení matic A,B prvek po prvku % násobí se stejnolehlé prvky v maticích
C = Stránka 2
PPEL_4_cviceni_MATLAB.txt 5 21
12 32
D=B.*A
% násobení matic B,A prvek po prvku % toto násobení matic .* je komutativní, % výsledné matice C a D jsou stejné
D = 5 21
12 32
E=A.^2 E = 1 9
% umocnění jednotlivých prvků matice A na druhou 4 16
F=A.*A F = 1 9
% odpovídá A.^2, výsledné matice E a F jsou stejné 4 16
G=A.^3 G = 1 27
% umocnění jednotlivých prvků matice A na třetí 8 64
H=A.*A.*A H = 1 8 27 64
% odpovídá A.^3, výsledné matice G a H jsou stejné
CH=G.^(1/3) CH =
% třetí odmocnina prvků matice G 1 3
K=A./B
2 4 % dělení zprava matic prvek po prvku, % dělení prvků matice A prvky matice B
K = 0.2 0.42857
0.33333 0.5
format rat
% format zobrazuje výsledek ve tvaru zlomku
K=A./B
% ještě jednou dělení prvků matice A prvky matice B % výsledek zlomky
K = 1/5 3/7 L=A.\B
1/3 1/2 % dělení zleva matic prvek po prvku, % dělení prvků matice B prvky matice A
L = 5 7/3 M=B./A
3 2 % dělení zprava matic prvek po prvku, % dělení prvků matice B prvky matice A, % výsledek stejný jako matice L
M = 5 7/3 N=B.\A
3 2 % dělení zleva matic prvek po prvku, % dělení prvků matice A prvky matice B, % výsledek stejný jako matice K
N = 1/5 3/7
1/3 1/2 Stránka 3
PPEL_4_cviceni_MATLAB.txt format
% návrat k původnímu formátu výsledků (4 desetinná místa)
%-------------------------------------------% operace * / \ ^ jsou maticové operace %-----------------------------------------------------------------------% pro maticové násobení musí být počet sloupců v 1. matici stejný % jako počet řádků v 2. matici! % výsledek má počet řádků jako 1. matice a počet sloupců jako 2. matice %-----------------------------------------------------------------------% pro maticové operace nemusí mít tedy matice stejný rozměr %----------------------------------------------------------A A =
% matice A zadána již dříve, zde pro připomenutí 1 3
2 4
B B =
% matice B zadána již dříve, zde pro připomenutí 5 7
6 8
C=A*B
% maticové násobení matic A,B % lze násobit, matice A má 2 sloupce, matice B má 2 řádky
C = 19 43 % % % % %
22 50
Výsledná matice C prvek 1.ř., 1.sl. prvek 1.ř., 2.sl. prvek 2.ř., 1.sl. prvek 2.ř., 2.sl.
D=B*A
% % % %
D = 23 31 % % % % %
má 2 řádky a 2 sloupce = 1*5 + 2*7 = 19 = 1*6 + 2*8 = 22 = 3*5 + 4*7 = 43 = 3*6 + 4*8 = 50
maticové násobení matic B,A, maticové násobení * není komutativní lze násobit, matice B má 2 sloupce, matice A má 2 řádky výsledné matice C a D se liší
34 46
Výsledná matice D prvek 1.ř., 1.sl. prvek 1.ř., 2.sl. prvek 2.ř., 1.sl. prvek 2.ř., 2.sl.
E=A^2
má také = 5*1 + = 5*2 + = 7*1 + = 7*2 +
2 řádky a 2 sloupce 6*3 = 23 6*4 = 34 8*3 = 31 8*4 = 46
% umocnění matice A na druhou, % lze umocňovat jen čtvercovou matici % odpovídá maticovému násobení A*A (viz dále matice F)
E = 7 15
10 22
F=A*A
% % % %
maticové násobení A*A odpovídá A^2, výsledné matice E a F jsou stejné lze násobit, matice A má 2 sloupce a tato matice A má i 2 řádky (=> matice A musí být čtvercová)
F = 7 15
10 22
% Výsledná matice F má také 2 řádky a 2 sloupce % prvek 1.ř., 1.sl. = 1*1 + 2*3 = 7 % prvek 1.ř., 2.sl. = 1*2 + 2*4 = 10 Stránka 4
PPEL_4_cviceni_MATLAB.txt % prvek 2.ř., 1.sl. = 3*1 + 4*3 = 15 % prvek 2.ř., 2.sl. = 3*2 + 4*4 = 22 G=A^3 G = 37 81
% umocnění matice A na třetí, je to jako A^2*A 54 118
H=A*A*A
% maticové násobení A*A*A odpovídá A^3, % výsledné matice G a H jsou stejné
H = 37 81
54 118
K=A/B K = 3.0000 2.0000
% dělení matice A maticí B zprava -2.0000 -1.0000
L=A*inv(B)
% A*inv(B) odpovídá maticovému dělení A/B, % výsledné matice K a L jsou stejné
L = 3.0000 2.0000
-2.0000 -1.0000
M=B\A
% dělení matice B maticí A zleva, % pozor - maticové dělení - matice M a K nejsou stejné
M = 5.0000 -4.0000
4.0000 -3.0000
N=inv(B)*A
% inv(B)*A odpovídá maticovému dělení B\A, % výsledné matice M a N jsou stejné
N = 5.0000 -4.0000
4.0000 -3.0000
O=A\B O = -3.0000 4.0000
% dělení matice A maticí B zleva -4.0000 5.0000
P=inv(A)*B
% inv(A)*B odpovídá maticovému dělení A\B, % výsledné matice O a P jsou stejné
P = -3.0000 4.0000 Q=B/A Q = -1 -2
-4.0000 5.0000 % dělení matice B maticí A zprava 2 3
B*inv(A)
% B*inv(A) odpovídá maticovému dělení B/A, % výsledné matice jsou stejné
ans = -1.0000 -2.0000 a=[1,2] a = 1 b=[5;10] b = 5 10
2.0000 3.0000 % řádkový vektor a 2 % sloupcový vektor b
Stránka 5
PPEL_4_cviceni_MATLAB.txt % matice A zadána již dříve, zde pro připomenutí
A A = 1 3
2 4
R=a*A
% maticové násobení vektoru a s maticí A % lze násobit, vektor a má 2 sloupce, matice A má 2 řádky
R = 7
10
% Výsledek R má 1 řádek a 2 sloupce % prvek 1.ř., 1.sl. = 1*1 + 2*3 = 7 % prvek 1.ř., 2.sl. = 1*2 + 2*4 = 10 S=A*b
% maticové násobení matice A a vektoru b % lze násobit, matice A má 2 sloupce, vektor b má 2 řádky
S = 25 55 % Výsledek S má 2 řádky a 1 sloupec % prvek 1.ř., 1.sl. = 1*5 + 2*10 = 25 % prvek 2.ř., 1.sl. = 3*5 + 4*10 = 55 c=a*b
% maticové násobení vektorů a,b % lze násobit, vektor a má 2 sloupce, vektor b má 2 řádky
c = 25 % Výsledek c má 1 řádek a 1 sloupec % prvek 1.ř., 1.sl. = 1*5 + 2*10 = 25 d=b*a
% maticové násobení vektorů a,b není komutativní, % výsledky c a d se liší % lze násobit, vektor b má 1 sloupec, vektor a má 1 řádek
d = 5 10 % % % % %
10 20
Výsledná matice d prvek 1.ř., 1.sl. prvek 1.ř., 2.sl. prvek 2.ř., 1.sl. prvek 2.ř., 2.sl.
e=a.*b'
e = 5 f=a'.*b
f =
má 2 řádky a 2 sloupce = 5*1 = 5 = 5*2 = 10 = 10*1 = 10 = 10*2 = 20
% % % % % %
pro násobení vektorů a,b prvek po prvku je nutno jeden z vektorů transponovat vektory musí mít stejný rozměr, tj.stejný počet řádků a sloupců oba vektory jsou řádkové (transponován b), výsledek je 1*5 = 5, 2*10 = 20
% % % % % %
pro násobení vektorů a,b prvek po prvku je nutno jeden z vektorů transponovat vektory musí mít stejný rozměr, tj.stejný počet řádků a sloupců oba vektory jsou sloupcové (transponován a), výsledek 1*5 = 5, 2*10 = 20
20
5 20 T=[1,2,3;-4,5,-6;9,8,7] T = 1 2 3 -4 5 -6 9 8 7
% matice T
Stránka 6
PPEL_4_cviceni_MATLAB.txt % maticovým násobením matice T a transponované matice T % vznikne matice symetrická podle hlavní diagonály
T*T.' ans = 14 -12 46
-12 77 -38
T*inv(T)
46 -38 194 % maticovým násobením matice T a k ní inverzní matice % vznikne matice jednotková
ans = 1.0000 -0.0000 0.0000
-0.0000 1.0000 -0.0000
-0.0000 0.0000 1.0000
diag(T) ans = 1 5 7
% hlavní diagonála matice T
det(T) ans = -200
% determinant matice T
%-----------------------% řešení soustavy rovnic: %-----------------------% % % % % %
10*x1 + 8*x2 + 7*x3 + 9*x4 = -2 3*x1 + 2*x2 + x3 = 3 4*x1 + 5*x2 x4 = 1 8*x1 + 6*x2 + 4*x3 + 2*x4 = 6 -------------------------------hledáme neznámé x1, x2, x3, x4 - sloupcový vektor x se 4 prvky
A=[10,8,7,9;3,2,1,0;4,5,0,-1;8,6,4,2]
% matice koeficientů soustavy % na pozicích, kde není neznámá % v rovnici, je 0
A = 10 3 4 8
8 2 5 6
7 1 0 4
9 0 -1 2
b=[-2;3;1;6] b = -2 3 1 6
% vektor pravých stran (sloupcový)
x=A\b
% řešení soustavy rovnic % maticové dělení zleva
x = 1.0000 -1.0000 2.0000 -2.0000 x=inv(A)*b
% další možnost řešení soustavy rovnic % lze násobit, inv. matice A má 4 sloupce, % vektor b má 4 řádky
x = 1.0000 -1.0000 2.0000 -2.0000 Stránka 7
c=[-2,3,1,6] c = -2 3
PPEL_4_cviceni_MATLAB.txt % vektor pravých stran zadán jako řádkový 1
6
x=A\c.' x = 1.0000 -1.0000 2.0000 -2.0000
% při řešení soustavy rovnic je potřeba vektor transponovat
x=inv(A)*c' x = 1.0000 -1.0000 2.0000 -2.0000
% další možnost řešení soustavy rovnic s c'
x=inv(A)*c.'
% nebo s c.' (vektor pravých stran neobsahuje komplex. č.), % může být i c'
x = 1.0000 -1.0000 2.0000 -2.0000 %-----------------------% řešení soustavy rovnic: %-----------------------% % % % % %
10*x1 + 8*x2 + 7*x3 + 9*x4 = -2+9i 3*x1 + 2*x2 + x3 = 3-4i 4*x1 + 5*x2 x4 = 1-10i 8*x1 + 6*x2 + 4*x3 + 2*x4 = 6-8i -------------------------------hledáme neznámé x1, x2, x3, x4 - sloupcový vektor x se 4 prvky
A=[10,8,7,9;3,2,1,0;4,5,0,-1;8,6,4,2]
% matice koeficientů soustavy % na pozicích, kde není neznámá % v rovnici, je 0
A = 10 3 4 8
8 2 5 6
7 1 0 4
9 0 -1 2
b=[-2+9i;3-4i;1-10i;6-8i] b = -2.0000 3.0000 1.0000 6.0000
+ 9.0000i - 4.0000i -10.0000i - 8.0000i
x=inv(A)*b x = 1.0000 + -1.0000 2.0000 -2.0000 + x=A\b x = 1.0000 -1.0000 2.0000 -2.0000
% vektor pravých stran (sloupcový) % s komplex. čísly
% řešení soustavy rovnic 1.0000i 2.0000i 3.0000i 4.0000i % další možnost řešení soustavy rovnic
+ +
1.0000i 2.0000i 3.0000i 4.0000i Stránka 8
PPEL_4_cviceni_MATLAB.txt c=[-2+9i,3-4i,1-10i,6-8i] % vektor pravých stran zadán jako řádkový c = -2.0000 + 9.0000i 3.0000 - 4.0000i 1.0000 -10.0000i 6.0000 - 8.0000i x=inv(A)*c.'
% % % %
při řešení soustavy rovnic je potřeba vektor transponovat, c.' vektor c obsahuje komplex. čísla, nutno použít c.' pro transpozici!
x = 1.0000 -1.0000 2.0000 -2.0000 diary off
+ +
1.0000i 2.0000i 3.0000i 4.0000i % prerusi ukladani do textoveho souboru
Stránka 9