Mat-1.415 V3/2002 LA.mws
HA (osittain myös HH) 11.9.02
Alustukset, aliakset, kirjastot
> | restart: |
Warning, the name changecoords has been redefined
> | with(linalg): with(LinearAlgebra): |
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the assigned name GramSchmidt now has a global binding
Edellinen on vanhempi, versiosta 6 alkaen on uudempi. Pyrimme etupäässä käyttämään uutta, mutta joskus
on mukavaa/välttämätöntä käyttää jotain vanhan kunnon linalgin funktiota.
Koska uudet nimet ovat tosi pitkiä, kannattaa käyttää aliaksia:
> | alias(rref=ReducedRowEchelonForm): |
> | alias(ref=GaussianElimination): # "row echelon form" |
> | alias(Det=Determinant,Id=IdentityMatrix): |
Matriisien rakentelu ja laskutoimitukset
Rakentelu
Kaikki matriisit kannattaa ajatella muodostetuiksi ositetuista matriiseista.
Katsotaan seuraavassa muutamia esimerkkejä:
Sarake
> | <1,2,3>; |
Rivi
> | <1 | 2 | 3>; |
2x2-matriisi koottuna sarakkeittain
> | <<1,2>|<3,4>>; |
2x2-matriisi koottuna riveittäin.
> | <<1 | 3>,<2 | 4>>; |
Lopuksi yleinen ositettu tapaus
> | A := <<1,2>|<3,4>>: |
> | <A | <1,2>>; |
> | <<A | <1,2>>, <a|b|c>>; |
Matriisin osia voi muutella päivittämällä riviä, saraketta tai osamatriisia (Matlabmaisesti)
> | B:=<<A | <1,2>>, <a|b|c>>; |
> | B[1,1..-1]:=<x|x|x>: B; # Muutetaan 1. rivi. |
> | B[1,1..-2]; |
> | B[1..-1,2]:=<haa,hii,hoo>: B; |
> | B[2..3,[1,3]]; |
> | B[2..3,[1,3]]:=<<21,31>|<23,33>>: B; |
Tässä oletetaan, että käytössä on vähintään versio 6. (Maple 6)
Laskutoimitukset
Käydään läpi perusoperaatiot esimerkkien avulla.
> | A := <<1,2>|<3,4>>: B := <<a,b>|<c,d>>: |
Kertolasku
> | A . B; |
Transpoosi
> | Transpose(A); |
Gaussin eliminaatio rivioperaatioilla ("käsin)
Aloitetaan restartista.
> | restart:with(linalg): with(LinearAlgebra): |
Warning, the name changecoords has been redefined
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the assigned name GramSchmidt now has a global binding
Esim:
> | A := <<1,1,0,1>|<-1,1,2,-3>|<1,2,1,0>|<0,4,4,-4>|<0,1,3,-2>|<2,2,1,1>>; |
> | b:=<0,3,2,0>: |
> | Ab:=<A|b>; |
> | Ab[2,1..-1]:=Ab[2,1..-1]-Ab[1,1..-1]: Ab; |
> | Ab[4,1..-1]:=Ab[4,1..-1]-Ab[1,1..-1]: Ab; |
1. sarake nollattu. Siirrytään 2. sarakkeeseen.
> | Ab[3,1..-1]:=Ab[3,1..-1]-Ab[2,1..-1]: |
> | Ab[4,1..-1]:=Ab[4,1..-1]+Ab[2,1..-1]: Ab; |
2. sarake nollattu. Seuraava pivot on sarakkeessa 5.
> | Ab[4,1..-1]:=Ab[4,1..-1]+(1/2)*Ab[3,1..-1]: Ab; |
Ratkaise nyt "käsin"!
> | x6:=solve(-1/2*x=5/2,x); |
x5 ja x4 vapaita.
> | x5:=solve(2*x+x6=-1,x); |
Jne. Kaikenkaikkiaan 2 vapaata parametria,x4 ja x3.
Jos haluttaisiin sarakepermutaatioita, niin näin:
> | Ab[1..-1,[3,5]]:=Ab[1..-1,[5,3]]:Ab[1..-1,[4,6]]:=Ab[1..-1,[6,4]]: Ab; |
> |
Gaussin eliminaatio valmiilla funktioilla, aliakset ref ja rref
> | restart:with(linalg): with(LinearAlgebra): |
Warning, the name changecoords has been redefined
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the assigned name GramSchmidt now has a global binding
> | alias(rref=ReducedRowEchelonForm): |
> | alias(ref=GaussianElimination): # "row echelon form" |
> | A := <<1,1,0,1>|<-1,1,2,-3>|<1,2,1,0>|<0,4,4,-4>|<0,1,3,-2>|<2,2,1,1>>; |
> | b:=<0,3,2,0>:Ab:=<A|b>; |
> | ref(Ab); |
> | rref(Ab); |
> |
> |
Takaisinsijoitus ref-muodosta sekä rref-muoto,LinearSolve
> | E:=<<1,0,0>|<-7,1,0>|<2,-3,0>|<-5,3,1>|<8,1,-1>|<10,-5,4>>; |
> | LinearSolve(E[1..-1,1..-2],E[1..-1,-1]); |
Tässä laskettu "käsin":
> | x4:=x5+4;x2:=3*x3-4*x5-17; |
> | x1:=7*x2-2*x3+5*x4-8*x5+10; |
Ratkaisu voidaan kirjoittaa muodossa lineaarikombinaatio kahdesta vektorista + vakiovektori.
(Luennolla)
Jatketaan harjoituksen vuoksi saattamalla E rref-muotoon.
> | E; |
> | E[2,1..-1]:=E[2,1..-1]-3*E[3,1..-1]: E; |
> | E[1,1..-1]:=E[1,1..-1]+5*E[3,1..-1]: E; |
> | E[1,1..-1]:=E[1,1..-1]+7*E[2,1..-1]: E; |
> |
> |
rref-muoto on nyt valmis. Tukisarakkeet: 1,2,4, vapaat muuttujat x3 ja x5.
Ratkaisut voidaan nyt kirjoittaa suoraan ratkaisemalla jokaisesta yhtälöstä ao. kantamuuttuja vapaiden muuttujien avulla.
Erityisen mukavaa käsinlaskussa.