01.09.2013 Views

Matrixregning i Maple

Matrixregning i Maple

Matrixregning i Maple

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

estart;<br />

Vi skal benytte os intensivt af pakken LinearAlgebra i kurset LinAlg (dermiod vil vi undgå pakken linalg!).<br />

Derfor vil vi altid begynde med:<br />

> with(LinearAlgebra);<br />

[&x, Add, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix, BidiagonalForm, BilinearForm,<br />

CharacteristicMatrix, CharacteristicPolynomial, Column, ColumnDimension, ColumnOperation,<br />

ColumnSpace, CompanionMatrix, ConditionNumber, ConstantMatrix, ConstantVector, Copy,<br />

CreatePermutation, CrossProduct, DeleteColumn, DeleteRow, Determinant, Diagonal, DiagonalMatrix,<br />

Dimension, Dimensions, DotProduct, EigenConditionNumbers, Eigenvalues, Eigenvectors, Equal,<br />

ForwardSubstitute, FrobeniusForm, GaussianElimination, GenerateEquations, GenerateMatrix,<br />

GetResultDataType, GetResultShape, GivensRotationMatrix, GramSchmidt, HankelMatrix,<br />

HermiteForm, HermitianTranspose, HessenbergForm, HilbertMatrix, HouseholderMatrix,<br />

IdentityMatrix, IntersectionBasis, IsDefinite, IsOrthogonal, IsSimilar, IsUnitary, JordanBlockMatrix,<br />

JordanForm, LA_Main, LUDecomposition, LeastSquares, LinearSolve, Map, Map2, MatrixAdd,<br />

MatrixExponential, MatrixFunction, MatrixInverse, MatrixMatrixMultiply, MatrixNorm, MatrixPower,<br />

MatrixScalarMultiply, MatrixVectorMultiply, MinimalPolynomial, Minor, Modular, Multiply,<br />

NoUserValue, Norm, Normalize, NullSpace, OuterProductMatrix, Permanent, Pivot, PopovForm,<br />

QRDecomposition, RandomMatrix, RandomVector, Rank, RationalCanonicalForm,<br />

ReducedRowEchelonForm, Row, RowDimension, RowOperation, RowSpace, ScalarMatrix,<br />

ScalarMultiply, ScalarVector, SchurForm, SingularValues, SmithForm, SubMatrix, SubVector,<br />

SumBasis, SylvesterMatrix, ToeplitzMatrix, Trace, Transpose, TridiagonalForm, UnitVector,<br />

VandermondeMatrix, VectorAdd, VectorAngle, VectorMatrixMultiply, VectorNorm, VectorScalarMultiply,<br />

ZeroMatrix, ZeroVector, Zip]<br />

><br />

<strong>Matrixregning</strong> i <strong>Maple</strong><br />

Matricer af størrelse op til 4x4 indtastes nemmest med brug af menuen til venstre. Klik på det ønskede<br />

format under Matrix og benyt tabulatorknappen:<br />

> A[1]:=;<br />

é 2 5ù<br />

ê ú<br />

A1 := ê 0 1ú<br />

ê ú<br />

ê ú<br />

ë 4 -2û<br />

> A[2]:=;<br />

> A[3]:=;<br />

> A[4]:=;<br />

A 2 :=<br />

é<br />

ê<br />

ê<br />

ë<br />

1 0 0ù<br />

ú<br />

0 -1 2<br />

ú<br />

û<br />

A3 := [ 4 4 5]


é 2ù<br />

ê ú<br />

ê 8ú<br />

A4 := ê ú<br />

ê ú<br />

ê 0ú<br />

ê ú<br />

ê ú<br />

ë -4û<br />

> A[5]:=;<br />

é 1<br />

ê<br />

A5 := ê 1<br />

ê<br />

ê<br />

ë 0<br />

0<br />

2<br />

0<br />

0ù<br />

ú<br />

1ú<br />

ú<br />

ú<br />

1û<br />

Matrixmultiplikation indikeres med punktum (og ikke med stjerne!):<br />

> A[1].A[2];<br />

hvis ikke et produkt har mening protesterer <strong>Maple</strong> med<br />

> A[1].A[3];<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

2 -5 10ù<br />

ú<br />

0 -1 2ú<br />

ú<br />

ú<br />

4 2 -4û<br />

Error, (in LinearAlgebra:-MatrixMatrixMultiply) first matrix column<br />

dimension (2) second matrix row dimension (1)<br />

Fordi den associative regel gælder giver det mening at udregne<br />

> A[4].A[3].A[5].A[1].A[2];<br />

> A[4].A[3].A[1].A[2].A[5];<br />

Lad os se på<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

104 -60 120ù<br />

ú<br />

416 -240 480ú<br />

ú<br />

ú<br />

0 0 0ú<br />

ú<br />

ú<br />

-208 120 -240û<br />

28 -56 28ù<br />

ú<br />

112 -224 112ú<br />

ú<br />

ú<br />

0 0 0ú<br />

ú<br />

ú<br />

-56 112 -56û


B:=;<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

B := ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

0<br />

1<br />

2<br />

1<br />

2<br />

1<br />

3<br />

1<br />

3<br />

1<br />

3<br />

1ù<br />

ú<br />

2ú<br />

ú<br />

ú<br />

0ú<br />

ú<br />

ú<br />

ú<br />

1ú<br />

2<br />

ú<br />

û<br />

Vi ganger med skalar med<br />

> 2*B;<br />

adderer med<br />

> B+B;<br />

og ganger med<br />

> B.B;<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

0<br />

1<br />

1<br />

0<br />

1<br />

1<br />

5<br />

12<br />

1<br />

6<br />

5<br />

12<br />

Men kan også tage potenser (idet matricen er kvadratisk!)<br />

2<br />

3<br />

2<br />

3<br />

2<br />

3<br />

2<br />

3<br />

2<br />

3<br />

2<br />

3<br />

5<br />

18<br />

5<br />

18<br />

4<br />

9<br />

ù<br />

1ú<br />

ú<br />

ú<br />

ú<br />

0ú<br />

ú<br />

ú<br />

ú<br />

1<br />

ú<br />

ú<br />

û<br />

ù<br />

1ú<br />

ú<br />

ú<br />

ú<br />

0ú<br />

ú<br />

ú<br />

ú<br />

1<br />

ú<br />

ú<br />

û<br />

1ù<br />

ú<br />

4ú<br />

ú<br />

1ú<br />

ú<br />

4ú<br />

ú<br />

ú<br />

1ú<br />

2<br />

ú<br />

û


B^2;<br />

> B^100;<br />

é<br />

ê<br />

ë<br />

é<br />

ê<br />

ë<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

5<br />

12<br />

1<br />

6<br />

5<br />

12<br />

5<br />

18<br />

5<br />

18<br />

16751759576924895028120263260463021039414047963208544665474661022676619659155<br />

54443218625005908841390855596504818378095309206079572628589330530791428456448 ,<br />

4<br />

9<br />

100510557461549370168721579562778126236483518577935382290334494555650770871077<br />

326659311750035453048345133579028910268571855236477435771535983184748570738688 ,<br />

22335679435899860037493684347284028052551841262781426823842540167696411056363ù<br />

ú ,<br />

72590958166674545121854474128673091170793745608106096838119107374388571275264<br />

é<br />

ê<br />

ë<br />

50255278730774685084360789781389063118241526393548729562124183476808464318095<br />

217772874500023635365563422386019273512381236824318290514357322123165713825792 ,<br />

2355716190505063363329412021002612333667588309256875576958021343581397576361<br />

10208103492188607907760785424344653445892870476139919867860499474523392835584 ,<br />

8375879788462447514060131630231510519706998697397775454701718513140384425497 ù<br />

ú<br />

36295479083337272560927237064336545585396872804053048419059553687194285637632û<br />

é<br />

ê<br />

ë<br />

100510557461549370168721579562778126236483518577935382290334494555650770871077<br />

217772874500023635365563422386019273512381236824318290514357322123165713825792 ,<br />

150765836192324055253082369344167189354725510762322035018544805634493077424059<br />

326659311750035453048345133579028910268571855236477435771535983184748570738688 ,<br />

33503519153849790056240526520926042078827906950529119104873130180411391367907ù<br />

ú<br />

72590958166674545121854474128673091170793745608106096838119107374388571275264û<br />

> evalf(B^100);<br />

Matricer må gerne have symbolske indgange<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

1ù<br />

ú<br />

4ú<br />

ú<br />

1ú<br />

ú<br />

4ú<br />

ú<br />

ú<br />

1ú<br />

2<br />

ú<br />

û<br />

0.3076923077 0.3076923077 0.3076923077ù<br />

ú<br />

0.2307692308 0.2307692308 0.2307692308ú<br />

ú<br />

ú<br />

0.4615384615 0.4615384615 0.4615384615û<br />

> C:=;<br />

é 1<br />

ê<br />

C := ê 0<br />

ê<br />

ê<br />

ë d<br />

c<br />

2<br />

-2<br />

2 ù<br />

ú<br />

-3ú<br />

ú<br />

ú<br />

-1û<br />

û<br />

,<br />

ù<br />

ú<br />

û


B.C;<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

1<br />

2 d<br />

1<br />

2<br />

1 1<br />

+<br />

2 2 d<br />

-1<br />

3<br />

1 2<br />

c +<br />

2 3<br />

1 1<br />

c -<br />

2 3<br />

-3ù<br />

ú<br />

2 ú<br />

ú<br />

ú<br />

0 ú<br />

ú<br />

ú<br />

ú<br />

-1ú<br />

2<br />

ú<br />

û<br />

Visse matricer er forudprogrammerede i <strong>Maple</strong>. Vigtigst er IdentityMatrix<br />

> E:=IdentityMatrix(3);<br />

> E.B;<br />

E :=<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

0<br />

1<br />

2<br />

1<br />

2<br />

1 0 0ù<br />

ú<br />

0 1 0ú<br />

ú<br />

ú<br />

0 0 1û<br />

Det er muligt - men vi har endnu ikke set hvordan - at beregne den inverse matrix til visse matricer:<br />

> MatrixInverse(B);<br />

> B^(-1);<br />

men ikke til alle...<br />

> MatrixInverse();<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

é<br />

ê<br />

ê<br />

ê<br />

ê<br />

ë<br />

1<br />

3<br />

1<br />

3<br />

1<br />

3<br />

1ù<br />

ú<br />

2ú<br />

ú<br />

ú<br />

0ú<br />

ú<br />

ú<br />

ú<br />

1ú<br />

2<br />

ú<br />

û<br />

-2 0 2ù<br />

ú<br />

3 3 -3ú<br />

ú<br />

ú<br />

0 -2 2û<br />

-2 0 2ù<br />

ú<br />

3 3 -3ú<br />

ú<br />

ú<br />

0 -2 2û<br />

Error, (in LinearAlgebra:-LA_Main:-MatrixInverse) singular matrix


><br />

Illustrere lineære afbildninger på R^2<br />

De følgende tre kommandoer skal benyttes ved løsning af ugeopgave 1.2:<br />

> futhark:=[,,,,];<br />

futhark :=<br />

é<br />

ê<br />

ê<br />

ë<br />

é<br />

ê<br />

ê<br />

ë<br />

0ù<br />

ú ,<br />

0<br />

ú<br />

û<br />

0 é ù<br />

ê ú ,<br />

ê<br />

ë<br />

3<br />

ú<br />

û<br />

1 é ù<br />

ê ú ,<br />

ê<br />

ë<br />

2<br />

ú<br />

û<br />

0 é ù<br />

ê ú ,<br />

ê<br />

ë<br />

1<br />

ú<br />

û<br />

1 é ù<br />

ê ú<br />

ê<br />

ë<br />

0<br />

ú<br />

û<br />

> tegn:=(LL,farve)->plot([seq([LL[i][1],LL[i][2]],i=1..5)],scaling=constr<br />

ained,view=[-10..10,-10..10],thickness=3,color=farve);<br />

tegn := ( LL, farve)<br />

® plot æ é<br />

ç<br />

seqæ é LLi , LLi ù , i = 1 .. 5ö<br />

ù<br />

ê<br />

çè<br />

ç ê ú ÷ ú<br />

ê è ë 1 2<br />

ë<br />

û ø ú<br />

û<br />

view = [ -10 .. 10, -10 .. 10],<br />

thickness = 3, color = farve ö ÷<br />

÷ø<br />

ù<br />

ú<br />

ú<br />

û<br />

, scaling = constrained,<br />

> illustrer:=(A,farve)->plots[display]([tegn(futhark,black),tegn(map(unap<br />

ply(lin(A,x),x),futhark),farve),plots[textplot]([8,10,A[1,1]],font=[hel<br />

vetica,bold ,24]),plots[textplot]([10,10,A[1,2]],font=[helvetica,bold<br />

,24]),plots[textplot]([8,8,A[2,1]],font=[helvetica,bold<br />

,24]),plots[textplot]([10,8,A[2,2]],font=[helvetica,bold ,24])]);<br />

illustrer := ( A, farve)<br />

® plotsdisplay ([tegn( futhark, black),<br />

tegn( map( unapply( lin( A, x),<br />

x),<br />

futhark),<br />

farve),<br />

plotstextplot( [ 8, 10, A1, 1],<br />

font = [ helvetica, bold, 24]<br />

),<br />

plotstextplot( [ 10, 10, A1, 2],<br />

font = [ helvetica, bold, 24]<br />

),<br />

plotstextplot( [ 8, 8, A2, 1],<br />

font = [ helvetica, bold, 24]<br />

),<br />

plotstextplot( [ 10, 8, A2, 2],<br />

font = [ helvetica, bold, 24]<br />

)])<br />

Med disse tre kommanoder kan man illustrere effekten af at tage en lineær afbildning givet ved en 2x2 matrix<br />

på figuren der ligner et oldnordisk R. Vi har fx<br />

> S:=; illustrer(S,green);<br />

S :=<br />

é<br />

ê<br />

ê<br />

ë<br />

1 0ù<br />

ú<br />

0 -1<br />

ú<br />

û<br />

Warning, unable to evaluate the function to numeric values in the region;<br />

see the plotting command's help page to ensure the calling sequence is<br />

correct


-10<br />

-5<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

5<br />

1<br />

0<br />

0<br />

-1<br />

Figuren i sort er den oprindelige, og den i grøn fremkommer heraf ved at tage den anførte lineære afbildning<br />

på hvert punkt i den sorte figur. Vi har fx også<br />

> F:=; illustrer(F,red);<br />

é 3 0ù<br />

F := ê ú<br />

ê<br />

ë<br />

0 3<br />

ú<br />

û<br />

Warning, unable to evaluate the function to numeric values in the region;<br />

see the plotting command's help page to ensure the calling sequence is<br />

correct<br />

10


-10<br />

-5<br />

Det er ikke nødvendigt for at løse opgaven, men lad os forklare hvordan illutsrer virker. Vi har noteret 5<br />

hjørner i den oprindelige figur...<br />

><br />

><br />

><br />

> tegn(futhark,black);<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

5<br />

3<br />

0<br />

0<br />

3<br />

10


lin:=(A,x)->A.x;<br />

> S:=;<br />

> lin(S,);<br />

-10<br />

-5<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

lin := ( A, x)<br />

® A . x<br />

S :=<br />

é<br />

ê<br />

ê<br />

ë<br />

1 0ù<br />

ú<br />

0 -1<br />

ú<br />

û<br />

é<br />

ê<br />

ê<br />

ë<br />

> Slin:=unapply(lin(S,x),x);<br />

Slin := x ® ( Matrix( 1..2,1..2,[ ... ], [ ... ], datatype = anything, storage = rectangular, order = C_order ) .<br />

x<br />

> Slin();<br />

><br />

> map(Slin,futhark);<br />

é<br />

ê<br />

ê<br />

ë<br />

1ù<br />

ú<br />

-1<br />

ú<br />

û<br />

1ù<br />

ú<br />

-1<br />

ú<br />

û<br />

5<br />

10


tegn(%,green);<br />

-10<br />

é 0ù<br />

é 0ù<br />

é 1ù<br />

é 0ù<br />

ê ú , ê ú , ê ú , ê ú ,<br />

ê<br />

ë<br />

0<br />

ú ê<br />

û ë<br />

-3<br />

ú ê<br />

û ë<br />

-2<br />

ú ê<br />

û ë<br />

-1<br />

ú<br />

û<br />

1<br />

é<br />

é ù<br />

ê<br />

ê ú<br />

ê<br />

ê<br />

ë<br />

0<br />

ú<br />

ë<br />

û<br />

-5<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

> illustrer:=(A,farve)->plots[display]([tegn(futhark,black),tegn(map(unap<br />

ply(lin(A,x),x),futhark),farve),plots[textplot]([8,10,A[1,1]],font=[hel<br />

vetica,bold ,24]),plots[textplot]([10,10,A[1,2]],font=[helvetica,bold<br />

,24]),plots[textplot]([8,8,A[2,1]],font=[helvetica,bold<br />

,24]),plots[textplot]([10,8,A[2,2]],font=[helvetica,bold ,24])]);<br />

illustrer := ( A, farve)<br />

® plotsdisplay ([tegn( futhark, black),<br />

tegn( map( unapply( lin( A, x),<br />

x),<br />

futhark),<br />

farve),<br />

plotstextplot( [ 8, 10, A1, 1],<br />

font = [ helvetica, bold, 24]<br />

),<br />

plotstextplot( [ 10, 10, A1, 2],<br />

font = [ helvetica, bold, 24]<br />

),<br />

plotstextplot( [ 8, 8, A2, 1],<br />

font = [ helvetica, bold, 24]<br />

),<br />

plotstextplot( [ 10, 8, A2, 2],<br />

font = [ helvetica, bold, 24]<br />

)])<br />

> illustrer(S,green);<br />

5<br />

ù<br />

ú<br />

ú<br />

û<br />

10


-10<br />

-5<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

> millustrer:=(A,farve)->plots[display]([tegn(futhark,black),tegn(map(una<br />

pply(lin(A,x),x),futhark),farve)]);<br />

millustrer := ( A, farve)<br />

® plotsdisplay ( [ tegn( futhark, black),<br />

tegn( map( unapply( lin( A, x),<br />

x),<br />

futhark),<br />

farve)<br />

])<br />

> millustrerfusk:=(fusk,farve)->plots[display]([tegn(futhark,black),tegn(<br />

fusk,farve)]);<br />

millustrerfusk := ( fusk, farve)<br />

® plotsdisplay( [ tegn( futhark, black),<br />

tegn( fusk, farve)<br />

] )<br />

> fuski:=array(1..2,1..2);<br />

> millustrer(,red);<br />

fuski := array( 1 .. 2, 1 .. 2, [] )<br />

5<br />

1<br />

0<br />

0<br />

-1<br />

10


-10<br />

> millustrer(,green);<br />

-5<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

5<br />

10


-10<br />

10<br />

5<br />

0<br />

0<br />

> millustrerfusk(map(x->x+,futhark),cyan);<br />

-5<br />

-5<br />

-10<br />

5<br />

10


-10<br />

-5<br />

> millustrerfusk([,,,,],magenta);<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

5<br />

10


-10<br />

> plots[display](fuski);<br />

-5<br />

10<br />

5<br />

0<br />

0<br />

-5<br />

-10<br />

Error, (in plots/display_array) first argument must be a plot structure<br />

or list, set or array of plot structures<br />

><br />

5<br />

10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!