Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
co byste měli umět po dnešní lekci:
● definovat matici, přistupovat k jejím prvkům ● provádět základní algebraické operace● spočíst inverzní matici ● najít řešení soustavy lineárních rovnic● určit vlastní čísla a vektory matice● najít řešení soustavy nelineárních rovnic
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
matice v Octave/Matlabu:
A=[1 2; 3 4]
A =
1 2 3 4
prvky v řádku matice se oddělují mezerou nebo čárkou, jednotlivé řádky středníkem
přístup k jednotlivým prvků matice: A(řádek, sloupec)
A(1,1) = 1 A(1,2) = 2A(2,1) = 3 A(2,2) = 4
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
základní operace s maticemi:
sčítání: A+B
octave:1> A=[1 2; 3 4];octave:2> B=[1 0; 0 1];octave:3> A+Bans =
2 2 3 5
octave:4>
odčítání: AB
octave:4> ABans =
0 2 3 3
octave:5>
násobení: A*B
octave:5> A*Bans =
1 2 3 4
octave:6> A.*Bans =
1 0 0 4
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
matematické funkce a matice:
všechny matematické funkce působí na každý prvek matice zvlášť:
speciální maticové funkce: expm, sqrtm,... pouze pro čtvercové matice
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
řešení soustavy rovnic Gaussovou eliminací:
Ax=b ⇒ x=A\b nebo x=A1*b
“obrácené” lomítko octave:6> x=A\b octave:7> x=inv(A)*b x = x =
8 8 2 2
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
užitečné funkce:B=zeros(m,n) vytvoří matici m x n s nulovými prvky octave:8> B=zeros(3,2)
B =
0 0 0 0 0 0
B=ones(m,n) vytvoří matici m x n s jednotkovými prvky octave:9> B=ones(3,2)B =
1 1 1 1 1 1
B=eye(m,n) vytvoří matici m x n s jedn.prvky na diagonále, ostatní 0 – jednotkové matice
B=eye(3,3) B = 1 0 0 0 1 0 0 0 1
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
užitečné funkce:
transponovaná matice transA=A';determinant matice detA=det(A);
inverzní matice invA=inv(A);stopa matice trA=trace(A);
Úkol: Vyřešte následující soustavu rovnic (tři závaží za sebou na stejných pružinách):
m1= 2 kg, m2= 3 kg, m3= 2.5 kg, k=10 N/m, g je gravitační zrychlení
vektor diag.prvků diagA=diag(A);součet prvků ntého ř. nradek=sum(A(n,:))násobení ntého řádku sloupcovým vektorem A(n,:)*xsubmatice subA=A(r1:rn,s1:sn);
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
LU dekompozice: další metoda řešení soustav rovnic Ax=b
U a L jsou takové matice, že platí: Ux=d L(Uxd)=Axb
LU=ALd=b
Octave/Matlab: funkce lu [L,U]=lu(A)
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
Př: Řešte soustavu Ax=b pomocí LU dekompozice
octave:82> [L,U]=lu(A)L =
0.14286 0.32836 1.00000 0.57143 1.00000 0.00000 1.00000 0.00000 0.00000
U =
7.00000 8.00000 9.00000 0.00000 9.57143 0.85714 0.00000 0.00000 1.43284
octave:83>
octave:83> d=L\bd =
5.0000 5.8571 9.2090
octave:84> x=U\dx =
8.9062 1.1875 6.4271
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
výpočet inverzní matice pomocí LU dekompozice:
Ax=b
jeli b “jednotkový vektor”, jsou řešení x sloupcem inverzní matice A
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
Podmíněnost matice:
norma vektoru norma matice
hodnota čísla Cond[A] udává tzv. podmíněnost matice (Cond ≥ 1)
čím je hůře podmíněná matice A, tímjsou chyby řešení většíCond[A]=10c, koef A jsou známy na tdesetinných míst, pak řešení jsou přesnájen na (tc) míst
funkce norm(X,p) a cond(X,p) – podívejte se do helpu co dělají
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
známé špatně podmíněné matice:
Hilbertova Vandermonde
A=hilb(n); c=[x1 x2 x3];A=vander(c);
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
Iterativní metoda řešení soustavy lineárních rovnic (GaussSeidel)
Ax=b, kde A je matice jejíž diagonální členy jsou nenulové.
postačující podmínka konvergence
relaxace (urychlující konvergenci)(zkuste různě podmíněné matice)
Úkol: Napište skript (funkci), která bude řešit soustavu rovnic GaussSeidelovou metodou
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
kořeny polynomu
funkce na hledání jednoho kořene (viz minule) neefektivní
kořeny polynomu = vlastní čísla A
x=eig(A);[v,x]=eig(A); % i v.vektory
x=roots([a1 a2 ...]); % koreny
a=poly([x1 x2 ...]); % koef.polyn.
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
Soustava nelineárních rovnic (NewtonRaphson):
pro 1 rovnici pro soustavu 2 rovnic
prvky Jacobiánu
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
Soustava nelineárních rovnic (NewtonRaphson):
kromě matice koef. soustavy rovnic potřebujeme ještě matici derivací, Jacobián
obecně: [Jac]*xi+1=f+[Jac]*xi, kde [Jac] je matice Jacobiánu, xi+1 je vektor nových iterací, f je vektor hodnot funkcí (rovnic f(x1, x2,...)=0) a xi je vektor původních iterací
Jacobián =
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
Soustava nelineárních rovnic (NewtonRaphson):
Příklad: Řešme soustavu
Napište funkci, která bude tuto soustavu řešit pomocí NewtonRaphsonovy metody. Výsledek porovnejte s výsledkem funkce fsolve (Octave) nebo fzero (Matlab).
fsolve('f',[1 1])
nějaká funkce f v souboru f.m
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
e1=7V, e2=10VR1=100 , R2=200 , R3 = 200
1. Určete proudy v jednotlivých větvích2. Určete napětí UAB mezi uzly A a B
Úkol:
Úkol: Rozdělení teploty úzkého pásku
2m
T0=40 T5=200
x=0 x=10
Ta=10
Ta=10
h' je koef. přenosu tepla, h'=0.05, ∆x=2m
Matice a maticová algebra, soustavy lineárníchMatice a maticová algebra, soustavy lineárníchrovnic, kořeny polynomu a soustava nelin.rovnicrovnic, kořeny polynomu a soustava nelin.rovnic
Úvod do programování v prostředích Octave, Scilab a Matlab
Úkol: Rozdělení teploty úzkého pásku
2m
T0=40 T5=200
x=0 x=10
Ta=10
Ta=10