Anvendelser af diagonaliseringsteorien 

> restart;
 

 

Opsætning (kan overspringes) 

> with(LinearAlgebra):
 

> with(plots):with(plottools):
 

> viz:=(v,c)->arrow([0,0,0],v,0.05,0.1,0.1, color=c);
 

proc (v, c) options operator, arrow; plottools:-arrow([0, 0, 0], v, 0.5e-1, .1, .1, color = c) end proc (1.1)
 

>
 

Fibonaccital 

> A:=Matrix([[ 1 , 1 ],
       [ 1 , 0 ]]);
 

Matrix(%id = 4320740312) (2.1)
 

> seq(A^n,n=1..15);
 

Matrix(%id = 4321288776), Matrix(%id = 4321405504), Matrix(%id = 4321442808), Matrix(%id = 4321912984), Matrix(%id = 4321973368), Matrix(%id = 4322032232), Matrix(%id = 4323067376), Matrix(%id = 43231...
Matrix(%id = 4321288776), Matrix(%id = 4321405504), Matrix(%id = 4321442808), Matrix(%id = 4321912984), Matrix(%id = 4321973368), Matrix(%id = 4322032232), Matrix(%id = 4323067376), Matrix(%id = 43231...
(2.2)
 

> seq(<1|0>.A^n.<1,0>,n=1..15);
 

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 (2.3)
 

> seq(evalf((5+sqrt(5))/10*((1+sqrt(5))/2)^n,7),n=1..15);
 

1.170820, 1.894427, 3.065248, 4.959675, 8.024922, 12.98460, 21.00952, 33.99412, 55.00364, 88.99778, 144.0014, 232.9991, 377.0006, 609.9997, 987.0004
1.170820, 1.894427, 3.065248, 4.959675, 8.024922, 12.98460, 21.00952, 33.99412, 55.00364, 88.99778, 144.0014, 232.9991, 377.0006, 609.9997, 987.0004
(2.4)
 

> (L,T):=Eigenvectors(A);
 

Vector[column](%id = 4366089624), Matrix(%id = 4366085584) (2.5)
 

> S:=T^(-1);
 

Matrix(%id = 4366366808) (2.6)
 

> DD:=DiagonalMatrix(L);
 

Matrix(%id = 4366384488) (2.7)
 

> S^(-1).DD.S;
 

Matrix(%id = 4366465488)
Matrix(%id = 4366465488)
Matrix(%id = 4366465488)
Matrix(%id = 4366465488)
Matrix(%id = 4366465488)
(2.8)
 

> simplify(%);
 

Matrix(%id = 4366481608) (2.9)
 

> seq(simplify(<1|0>.S^(-1).DD^n.S.<1,0>),n=1..15);
 

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 (2.10)
 

> simplify(<1|0>.S^(-1).DD^n.S.<1,0>);
 

`.`(Vector[row](%id = 4323566232), `^`(Matrix(%id = 4323787944), n), Vector[column](%id = 4325085120)) (2.11)
 

> simplify(<1|0>.S^(-1).DiagonalMatrix([L[1]^n,L[2]^n]).S.<1,0>);
 

`+`(`*`(`/`(1, 10), `*`(`^`(`+`(`/`(1, 2), `*`(`/`(1, 2), `*`(`^`(5, `/`(1, 2))))), n), `*`(`^`(5, `/`(1, 2))))), `*`(`/`(1, 2), `*`(`^`(`+`(`/`(1, 2), `*`(`/`(1, 2), `*`(`^`(5, `/`(1, 2))))), n))), `... (2.12)
 

> evalf(`+`(`/`(1, 2), `*`(`/`(1, 2), `*`(sqrt(5))))); 1; evalf(`+`(`/`(1, 2), `-`(`*`(`/`(1, 2), `*`(sqrt(5)))))); 1
 

 

1.618033988
-.6180339880 (2.13)
 

Befolkningsflytning 

Lad os kigge pÃ¥ afbildningen hørende til 

> B:=<<85/100,15/100>|<10/100, 90/100>>;
 

>
 

(3.1)
 

>
 

 

l[n] = `*`(Andel, `*`(landbeboere, `*`(efter, `*`(n, `*`(år))))),  b[n]=Andel byboere efter n Ã¥r .  

 

Flytningens forløb: 

> <l[n+1], b[n+1]> = B.<l[n], b[n]>;
 

Vector[column](%id = 4369506872) = Vector[column](%id = 4369542464) (3.2)
 

> seq(evalf(B^n.<1,0>),n=0..20);
 

Vector[column](%id = 4367567336), Vector[column](%id = 4369663312), Vector[column](%id = 4369733200), Vector[column](%id = 4369815016), Vector[column](%id = 4369903048), Vector[column](%id = 437000868...
Vector[column](%id = 4367567336), Vector[column](%id = 4369663312), Vector[column](%id = 4369733200), Vector[column](%id = 4369815016), Vector[column](%id = 4369903048), Vector[column](%id = 437000868...
Vector[column](%id = 4367567336), Vector[column](%id = 4369663312), Vector[column](%id = 4369733200), Vector[column](%id = 4369815016), Vector[column](%id = 4369903048), Vector[column](%id = 437000868...
Vector[column](%id = 4367567336), Vector[column](%id = 4369663312), Vector[column](%id = 4369733200), Vector[column](%id = 4369815016), Vector[column](%id = 4369903048), Vector[column](%id = 437000868...
(3.3)
 

> seq(evalf(B^n.<0,1>),n=0..20);
 

Vector[column](%id = 4368959224), Vector[column](%id = 4367833672), Vector[column](%id = 4367104696), Vector[column](%id = 4323210576), Vector[column](%id = 4324847136), Vector[column](%id = 436955233...
Vector[column](%id = 4368959224), Vector[column](%id = 4367833672), Vector[column](%id = 4367104696), Vector[column](%id = 4323210576), Vector[column](%id = 4324847136), Vector[column](%id = 436955233...
Vector[column](%id = 4368959224), Vector[column](%id = 4367833672), Vector[column](%id = 4367104696), Vector[column](%id = 4323210576), Vector[column](%id = 4324847136), Vector[column](%id = 436955233...
Vector[column](%id = 4368959224), Vector[column](%id = 4367833672), Vector[column](%id = 4367104696), Vector[column](%id = 4323210576), Vector[column](%id = 4324847136), Vector[column](%id = 436955233...
(3.4)
 

> display([seq(display([viz(DiagonalMatrix([B^n,1]).<1,0,0>,red),viz(DiagonalMatrix([B^n,1]).<0,1,0>,green), viz(DiagonalMatrix([B^n,1]).<1/2,1/2,0>,yellow) ]),n=0..20)],insequence=true,scaling=constrained,axes=normal);
 

Plot
 

>
 

> (L,T):=Eigenvectors(B);
 

Vector[column](%id = 4367540992), Matrix(%id = 4368629296) (3.5)
 

> s:=T^(-1);
 

Matrix(%id = 4365202432) (3.6)
 

> simplify(s^(-1).DiagonalMatrix(L).s);
 

Matrix(%id = 4344714312) (3.7)
 

> simplify(s^(-1).DiagonalMatrix(L)^n.s.<1,0>);
 

`.`(Matrix(%id = 4320893920), `^`(Matrix(%id = 4321066136), n), Vector[column](%id = 4320859296)) (3.8)
 

> simplify(T.DiagonalMatrix([L[1]^n,L[2]^n]).T^(-1).<1,0>);
 

Vector[column](%id = 4345340736) (3.9)
 

> limit(%[1],n=infinity);
 

`/`(2, 5) (3.10)
 

>
 

>
 

>
 

>
 

>