MNNE:Algebra

Z Skrypty dla studentów Ekonofizyki UPGOW

(Różnice między wersjami)
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.  
-
Można pokazać, że iloczyn ten jest też dany przez
+
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:
-
:<math>\mathrm{proj}_{\mathbf{u}}\,\mathbf{v} = {\langle \mathbf{v}, \mathbf{u}\rangle\over\langle \mathbf{u}, \mathbf{u}\rangle}\mathbf{u}. </math>
+
 
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-\mathrm{proj}_{\mathbf{u}_1}\,\mathbf{v}_2, </math>
+
:<math>\mathbf{u}_2 = \mathbf{v}_2-\frac{(\mathbf{u}_1,\mathbf{v}_2)}{\|\mathbf{u}_1 \|}\mathbf{u}_1, </math>
-
:<math>\mathbf{u}_3 = \mathbf{v}_3-\mathrm{proj}_{\mathbf{u}_1}\,\mathbf{v}_3-\mathrm{proj}_{\mathbf{u}_2}\,\mathbf{v}_3, </math>
+
:<math>\vdots</math>
:<math>\vdots</math>
-
:<math>\mathbf{u}_k = \mathbf{v}_k-\sum_{j=1}^{k-1}\mathrm{proj}_{\mathbf{u}_j}\,\mathbf{v}_k, </math>
+
:<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>
-
Grama-Schmidt
+
Wektory można zortonormalizować
 +
:<math>\mathbf{u}_k = \frac{\mathbf{u}_k}{\| \mathbf{u}_k\|},</math>  dla <math>k=1..N</math>
-
<source lang='matlab'>
+
 
 +
 
 +
 
 +
 
 +
<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:

  1. 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.
  2. Ciekawy kurs z Southern Illinois University cz. 2 cz. 3 cz. 4
  3. Słynny kurs algebry liniowe Gilberta Stranga z MIT: OCW

Octave/Matlab

  1. wikibooks.org/wiki/GNU_Octave
  2. Wroclaw elearning

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