Z Skrypty dla studentów Ekonofizyki UPGOW
m (→Ortogonalizacja Grama-Schmidta) |
(→Wartości i wektory własne) |
||
(Nie pokazano 23 wersji pomiędzy niniejszymi.) | |||
Linia 1: | Linia 1: | ||
+ | === Literatura === | ||
+ | |||
+ | Z algebry liniowej godne polecenia są następujące pozycje: | ||
+ | #[http://www.maths.ox.ac.uk/system/files/coursematerial/2010/2142/9/trefbau.pdf NUMERICAL LINEAR ALGEBRA Lloyd N. Trefethen and David Bau, III]. Jest to znany w świecie bestseller. O autorze [http://en.wikipedia.org/wiki/Lloyd_Nicholas_Trefethen Lloydzie Nicholasie Trefethenie] można znaleźć notke w wikipedii. | ||
+ | #Ciekawy kurs z Southern Illinois University [http://www.math.siu.edu/matlab/tutorial3.pdf cz. 2] [http://www.math.siu.edu/matlab/tutorial3.pdf cz. 3] [http://www.math.siu.edu/matlab/tutorial4.pdf cz. 4] | ||
+ | #Słynny kurs algebry liniowe Gilberta Stranga z MIT: [http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/ OCW] | ||
+ | |||
+ | Octave/Matlab | ||
+ | #[http://pl.wikibooks.org/wiki/GNU_Octave wikibooks.org/wiki/GNU_Octave ] | ||
+ | #[http://www.l5.pk.edu.pl/~putanowr/dokuwiki/doku.php?id=en:teaching:subjects:it Wroclaw elearning] | ||
+ | |||
=== Wektory === | === Wektory === | ||
Linia 5: | Linia 16: | ||
: <math>\mathbf a \cdot \mathbf b = \sum_{i=1}^{N}a_i b_i</math>, | : <math>\mathbf a \cdot \mathbf b = \sum_{i=1}^{N}a_i b_i</math>, | ||
gdzie <math>a_i</math> to i-ty element wektora a. | gdzie <math>a_i</math> to i-ty element wektora a. | ||
- | + | W geometrii definiuje się, że iloczyn skalarny jako | |
: <math>\mathbf a \cdot \mathbf b = \|\mathbf a\| \|\mathbf b\| \cos \theta</math>, | : <math>\mathbf a \cdot \mathbf b = \|\mathbf a\| \|\mathbf b\| \cos \theta</math>, | ||
gdzie <math>\theta</math> jest kątem między <math>\mathbf a</math> a <math>\mathbf b</math>. | gdzie <math>\theta</math> jest kątem między <math>\mathbf a</math> a <math>\mathbf b</math>. | ||
+ | |||
Jeśli jeden wektorów jest wektorem o długości jeden to mnoże go przez dowolny inny wektor może być interpretowane jako rzutowanie na kierunek wyznaczony przez pierwszy wektor. | Jeśli jeden wektorów jest wektorem o długości jeden to mnoże go przez dowolny inny wektor może być interpretowane jako rzutowanie na kierunek wyznaczony przez pierwszy wektor. | ||
Linia 13: | Linia 25: | ||
Baza | Baza | ||
- | Zmiana bazy | + | Zmiana bazy |
- | + | === Zmiana bazy i iloczyn skalarny=== | |
- | == Zmiana bazy i iloczyn skalarny== | + | |
Mamy <math>(x,y)=\sum_{i=1}^{N}x_i y_j</math> | Mamy <math>(x,y)=\sum_{i=1}^{N}x_i y_j</math> | ||
<source lang='matlab'> | <source lang='matlab'> | ||
Linia 27: | Linia 38: | ||
</source> | </source> | ||
- | == Ortogonalizacja Grama-Schmidta == | + | === Ortogonalizacja Grama-Schmidta === |
Operator rzutowania ortogonalnego wektora <math>\mathbf{v}</math> na wektor <math>\mathbf{u}</math> definiujemy jako: | Operator rzutowania ortogonalnego wektora <math>\mathbf{v}</math> na wektor <math>\mathbf{u}</math> definiujemy jako: | ||
- | + | ||
Wówczas dla układu k wektorów <math>\{\mathbf{v}_1, \ldots,\mathbf{v}_k\}</math> proces przebiega następująco: | Wówczas dla układu k wektorów <math>\{\mathbf{v}_1, \ldots,\mathbf{v}_k\}</math> proces przebiega następująco: | ||
:<math>\mathbf{u}_1 = \mathbf{v}_1,</math> | :<math>\mathbf{u}_1 = \mathbf{v}_1,</math> | ||
- | :<math>\mathbf{u}_2 = \mathbf{v}_2-\ | + | :<math>\mathbf{u}_2 = \mathbf{v}_2-\frac{(\mathbf{u}_1,\mathbf{v}_2)}{\|\mathbf{u}_1 \|}\mathbf{u}_1, </math> |
- | + | ||
:<math>\vdots</math> | :<math>\vdots</math> | ||
- | :<math>\mathbf{u}_k = \mathbf{v}_k-\sum_{j=1}^{k-1}\ | + | :<math>\mathbf{u}_k = \mathbf{v}_k-\sum_{j=1}^{k-1}\frac{(\mathbf{u}_j,\mathbf{v}_k)}{\| \mathbf{u}_j \|} \mathbf{u}_j, </math> |
- | + | Wektory można zortonormalizować | |
+ | :<math>\mathbf{u}_k = \frac{\mathbf{u}_k}{\| \mathbf{u}_k\|},</math> dla <math>k=1..N</math> | ||
- | <source lang= | + | |
+ | |||
+ | |||
+ | |||
+ | <source lang="matlab"> | ||
e1=b1 | e1=b1 | ||
e2=b2-(e1'*b2)/(e1'*e1)*e1 | e2=b2-(e1'*b2)/(e1'*e1)*e1 | ||
Linia 61: | Linia 76: | ||
</source> | </source> | ||
+ | ===Przeskształcenie liniowe=== | ||
+ | <source lang="matlab"> | ||
+ | [X,Y]=meshgrid (0:0.1:pi,0:0.1:2*pi); | ||
+ | p=[(cos(Y).*cos(X))(:)';(cos(Y).*sin(X))(:)';(sin(Y))(:)']; | ||
+ | plot3( p(1,:),p(2,:),p(3,:), 'ob'); hold on ; plot3( (A*p)(1,:),(A*p)(2,:),(A*p)(3,:), 'or');hold off | ||
+ | [E,V]=eig(A) | ||
+ | |||
+ | quiver3([0,0,0],[0,0,0],[0,0,0], E(1,:), E(2,:), E(3,:), 0,'g') | ||
+ | hold on | ||
+ | plot3( p(1,:),p(2,:),p(3,:), 'ob'); | ||
+ | plot3( (A*p)(1,:),(A*p)(2,:),(A*p)(3,:), 'or'); | ||
+ | hold off | ||
+ | </source> | ||
+ | |||
+ | |||
+ | ===Wartości i wektory własne=== | ||
+ | |||
+ | <source lang="matlab"> | ||
+ | A= meshgrid (1:3)'-meshgrid (1:3) | ||
+ | A = | ||
+ | |||
+ | 0 -1 -2 | ||
+ | 1 0 -1 | ||
+ | 2 1 0 | ||
+ | |||
+ | octave:283> [a,v]=eig(A) | ||
+ | a = | ||
+ | |||
+ | -0.64550 + 0.00000i -0.64550 - 0.00000i 0.40825 + 0.00000i | ||
+ | -0.25820 + 0.31623i -0.25820 - 0.31623i -0.81650 + 0.00000i | ||
+ | 0.12910 + 0.63246i 0.12910 - 0.63246i 0.40825 + 0.00000i | ||
+ | |||
+ | v = | ||
+ | |||
+ | Diagonal Matrix | ||
+ | |||
+ | 0.00000 + 2.44949i 0 0 | ||
+ | 0 0.00000 - 2.44949i 0 | ||
+ | 0 0 -0.00000 + 0.00000i | ||
+ | |||
+ | |||
+ | b1=(a(:,1)+ a(:,2))/(sqrt(2)) | ||
+ | b2=(a(:,1)- a(:,2))/(sqrt(2)*I) | ||
+ | C=[b1,b2,a(:,3)] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </source> | ||
+ | |||
+ | |||
+ | |||
+ | <source lang="matlab"> | ||
+ | </source> | ||
+ | |||
+ | <source lang="matlab"> | ||
+ | </source> | ||
+ | |||
+ | |||
+ | <source lang="matlab"> | ||
+ | phi=linspace(0, 2*pi, 30); | ||
+ | |||
+ | X=cos(phi); | ||
+ | Y=sin(phi); | ||
+ | |||
+ | A=[X; Y]; | ||
+ | |||
+ | plot(A(1,:),A(2,:),'bo'); | ||
+ | hold on | ||
+ | B=rand(2); | ||
+ | B=B+B' | ||
+ | A=B*A; | ||
+ | plot(A(1,:),A(2,:),'ro'); | ||
+ | |||
+ | [E,v]=eig(B) | ||
+ | |||
+ | quiver([0,0],[0,0], E(1,:), E(2,:), 0,'g') | ||
+ | |||
+ | hold off | ||
+ | |||
+ | xlim([-3,3]) | ||
+ | ylim([-3,3]) | ||
+ | </source> | ||
+ | |||
+ | <source lang="matlab"> | ||
+ | [phi,theta]=meshgrid (linspace(0, 2*pi, 30), linspace(0,pi,20) ); | ||
+ | |||
+ | X=sin(theta).*cos(phi); | ||
+ | Y=sin(theta).*sin(phi); | ||
+ | Z=cos(theta); | ||
+ | X=reshape(X,[prod(size(X)),1]) ; | ||
+ | Y=reshape(Y,[prod(size(Y)),1]) ; | ||
+ | Z=reshape(Z,[prod(size(Z)),1]) ; | ||
+ | |||
+ | A=[X Y Z]'; | ||
+ | |||
+ | plot3(A(1,:),A(2,:),A(3,:),'bo'); | ||
+ | hold on | ||
+ | B=rand(3); | ||
+ | A=B*A; | ||
+ | plot3(A(1,:),A(2,:),A(3,:),'ro'); | ||
+ | |||
+ | quiver3([0,0,0],[0,0,0],[0,0,0], E(1,:), E(2,:), E(3,:), 0,'g') | ||
+ | |||
+ | hold off | ||
+ | |||
+ | xlim([-1,1]) | ||
+ | ylim([-1,1]) | ||
+ | zlim([-1,1]) | ||
+ | </source> | ||
Ćwiczenia: | Ćwiczenia: |
Aktualna wersja na dzień 08:38, 4 mar 2011
Spis treści |
Literatura
Z algebry liniowej godne polecenia są następujące pozycje:
- NUMERICAL LINEAR ALGEBRA Lloyd N. Trefethen and David Bau, III. Jest to znany w świecie bestseller. O autorze Lloydzie Nicholasie Trefethenie można znaleźć notke w wikipedii.
- Ciekawy kurs z Southern Illinois University cz. 2 cz. 3 cz. 4
- Słynny kurs algebry liniowe Gilberta Stranga z MIT: OCW
Octave/Matlab
Wektory
Wektor w przestrzeni euklidesowej N wymiarowej jest reprezentowany przez N liczb. Iloczyn skalarny dwóch wektorów \(\mathbf a\) oraz \(\mathbf b\) o oznaczany symbolem \(\mathbf a \cdot \mathbf b\) określony jest jako:
- \(\mathbf a \cdot \mathbf b = \sum_{i=1}^{N}a_i b_i\),
gdzie \(a_i\) to i-ty element wektora a. W geometrii definiuje się, że iloczyn skalarny jako
- \(\mathbf a \cdot \mathbf b = \|\mathbf a\| \|\mathbf b\| \cos \theta\),
gdzie \(\theta\) jest kątem między \(\mathbf a\) a \(\mathbf b\).
Jeśli jeden wektorów jest wektorem o długości jeden to mnoże go przez dowolny inny wektor może być interpretowane jako rzutowanie na kierunek wyznaczony przez pierwszy wektor.
Baza
Zmiana bazy
Zmiana bazy i iloczyn skalarny
Mamy \((x,y)=\sum_{i=1}^{N}x_i y_j\)
b1=[1;1;1] b2=[1;0;1] b3=[1;0;-1] C=[b1,b2,b3] C'*C M=[b1'*b1,b1'*b2,b1'*b3;b2'*b1,b2'*b2,b2'*b3;b3'*b1,b3'*b2,b3'*b3]
Ortogonalizacja Grama-Schmidta
Operator rzutowania ortogonalnego wektora \(\mathbf{v}\) na wektor \(\mathbf{u}\) definiujemy jako:
Wówczas dla układu k wektorów \(\{\mathbf{v}_1, \ldots,\mathbf{v}_k\}\) proces przebiega następująco: \[\mathbf{u}_1 = \mathbf{v}_1,\] \[\mathbf{u}_2 = \mathbf{v}_2-\frac{(\mathbf{u}_1,\mathbf{v}_2)}{\|\mathbf{u}_1 \|}\mathbf{u}_1, \] \[\vdots\] \[\mathbf{u}_k = \mathbf{v}_k-\sum_{j=1}^{k-1}\frac{(\mathbf{u}_j,\mathbf{v}_k)}{\| \mathbf{u}_j \|} \mathbf{u}_j, \]
Wektory można zortonormalizować \[\mathbf{u}_k = \frac{\mathbf{u}_k}{\| \mathbf{u}_k\|},\] dla \(k=1..N\)
e1=b1 e2=b2-(e1'*b2)/(e1'*e1)*e1 e3=b3-( (e1'*b3)/(e1'*e1)*e1 + (e2'*b3)/(e2'*e2)*e2 )
E=[e1,e2,e3] quiver3([0,0,0],[0,0,0],[0,0,0], C(1,:), C(2,:), C(3,:), 0,'r') hold on quiver3([0,0,0],[0,0,0],[0,0,0], E(1,:), E(2,:), E(3,:), 0,'b') xlim([-1,1]) ylim([-1,1]) zlim([-1,1]) hold off
Przeskształcenie liniowe
[X,Y]=meshgrid (0:0.1:pi,0:0.1:2*pi); p=[(cos(Y).*cos(X))(:)';(cos(Y).*sin(X))(:)';(sin(Y))(:)']; plot3( p(1,:),p(2,:),p(3,:), 'ob'); hold on ; plot3( (A*p)(1,:),(A*p)(2,:),(A*p)(3,:), 'or');hold off [E,V]=eig(A) quiver3([0,0,0],[0,0,0],[0,0,0], E(1,:), E(2,:), E(3,:), 0,'g') hold on plot3( p(1,:),p(2,:),p(3,:), 'ob'); plot3( (A*p)(1,:),(A*p)(2,:),(A*p)(3,:), 'or'); hold off
Wartości i wektory własne
A= meshgrid (1:3)'-meshgrid (1:3) A = 0 -1 -2 1 0 -1 2 1 0 octave:283> [a,v]=eig(A) a = -0.64550 + 0.00000i -0.64550 - 0.00000i 0.40825 + 0.00000i -0.25820 + 0.31623i -0.25820 - 0.31623i -0.81650 + 0.00000i 0.12910 + 0.63246i 0.12910 - 0.63246i 0.40825 + 0.00000i v = Diagonal Matrix 0.00000 + 2.44949i 0 0 0 0.00000 - 2.44949i 0 0 0 -0.00000 + 0.00000i b1=(a(:,1)+ a(:,2))/(sqrt(2)) b2=(a(:,1)- a(:,2))/(sqrt(2)*I) C=[b1,b2,a(:,3)]
phi=linspace(0, 2*pi, 30); X=cos(phi); Y=sin(phi); A=[X; Y]; plot(A(1,:),A(2,:),'bo'); hold on B=rand(2); B=B+B' A=B*A; plot(A(1,:),A(2,:),'ro'); [E,v]=eig(B) quiver([0,0],[0,0], E(1,:), E(2,:), 0,'g') hold off xlim([-3,3]) ylim([-3,3])
[phi,theta]=meshgrid (linspace(0, 2*pi, 30), linspace(0,pi,20) ); X=sin(theta).*cos(phi); Y=sin(theta).*sin(phi); Z=cos(theta); X=reshape(X,[prod(size(X)),1]) ; Y=reshape(Y,[prod(size(Y)),1]) ; Z=reshape(Z,[prod(size(Z)),1]) ; A=[X Y Z]'; plot3(A(1,:),A(2,:),A(3,:),'bo'); hold on B=rand(3); A=B*A; plot3(A(1,:),A(2,:),A(3,:),'ro'); quiver3([0,0,0],[0,0,0],[0,0,0], E(1,:), E(2,:), E(3,:), 0,'g') hold off xlim([-1,1]) ylim([-1,1]) zlim([-1,1])
Ćwiczenia:
- obliczyć współrzędne wektora \(a=(1,2,3)\) w bazie \((e_1+e_2...\)
- obliczyc rząd macierzy