Harj. 1 LV

pe 20.9.02  HA

Alustukset

>    restart:with(linalg):
with(LinearAlgebra):
alias(rref=ReducedRowEchelonForm):alias(ref=GaussianElimination):  # "row echelon form"

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

>    Reshape:=(vek,m,n)->Matrix(linalg[matrix](m,n,convert(vek,list)));

Reshape := proc (vek, m, n) options operator, arrow; Matrix(linalg[matrix](m,n,convert(vek,list))) end proc

1.

Pidetään tunnettuna, että mxn-matriisit muodostavat vektoriavaruuden. Itse asiassa matriisiavaruus "on sama kuin" R^(mn), samahan se on kaikkien

VA-laskusääntöjen kannalta, ajatellaanko oliot pitkinä vektoreina vai "Reshape:lla" muotoilluina matriiseina. Kaikkihan tapahtuu vastinalkioittain.

Aliavaruudeksi osoittaminen on vain sitä, että  summan täytyy kuulua ja skalaari kertaa olion täytyy kuulua ao. aliavaruuskandidaattiin.

On tietysti syytä todeta, että AA-kandidaatti ei ole tyhjä. Luonnollisin tarkistus sille, on todeta, että 0-alkio kuuluu siihen.

No tässä tapauksessa näin on ilman muuta. (Yläkolmiomatriisihan tarkoittaa, että alakolmio on nolla, muu osa saa olla mitä tahansa.)

>    A1:=<<a1,0>|<b1,d1>>;A2:=<<a2,0>|<b2,d2>>;

A1 := Matrix(%id = 138670480)

A2 := Matrix(%id = 138905628)

>    A1+A2;

Matrix(%id = 140323448)

Siis kahden yläkolmiomatriisin summa on yläkolmiomatriisi.

>    evalm(c*A1); # evalm "kertoo skalaarin sisään"

matrix([[c*a1, c*b1], [0, c*d1]])

Niinpä joukkomme on suljettu myös skalaarilla kertomisen suhteen, ja kaikki on kunnossa.

Huom 1: Tässä ei todellakaan Maplea tarvittu muuta kuin tekstinkäsittelyyn. Sinänsä on hyvä huomata, että Maplea voi käyttää hyvin ihan vaan

matemaattisen dokumentin tuottamiseen, senhänsaa muunnetuksi myös html-muotoon.

Huom2: Tietystikään 2x2 ei ole mikään maaginen koko, vaan päättely toimii minkäkokoiselle tahansa.

2.

Uusi tehtävä on syytä aloittaa restartilla. Sen jälkeen pitää ladata arpeelliset kirjatot, määritellä aliakset jne.

>    restart:with(linalg):
with(LinearAlgebra):
alias(rref=ReducedRowEchelonForm):alias(ref=GaussianElimination):

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

>    A:=<<1,1,-1,1>|<-1,1,2,-3>|<1,2,-2,0>|<0,4,4,-4>|<0,1,3,-2>|<2,2,1,1>>;

A := Matrix(%id = 141031332)

>    b:=<1,1,1,1>;

b := Vector(%id = 135739116)

>    Ab:=<A|b>;

Ab := Matrix(%id = 140970832)

Kts. rivioperaatioissa mallia LA.mws :stä

>    Ab[2,1..-1]:=Ab[2,1..-1]-Ab[1,1..-1]: Ab;

Matrix(%id = 140970832)

>    Ab[3,1..-1]:=Ab[3,1..-1]+Ab[1,1..-1]: Ab;

Matrix(%id = 140970832)

Matrix(%id = 135049076)

>    Ab[4,1..-1]:=Ab[4,1..-1]-Ab[1,1..-1]: Ab;

Matrix(%id = 140970832)

1. sarake nollattu. Siirrytään 2. sarakkeeseen.

>    Ab[3,1..-1]:=Ab[3,1..-1]-Ab[2,1..-1]/2:

>    Ab[4,1..-1]:=Ab[4,1..-1]+Ab[2,1..-1]: Ab;

Matrix(%id = 140970832)

2. sarake nollattu. Tässä tuli ref-muoto valmiiksi. Tukisarakkeet: 1,2,3,5.

1 vapaa parametri.

Kannattaa harjoitella myös ratkaismista "käsin" takaisinsijoituksella LA.mws-mallin mukaan.

Huom! Jos jokin rivioperaatio menee väärin, on aloitettava alusta, siis riviltä A:=...

3.

>    restart: with(linalg): with(LinearAlgebra): with(plots):Reshape:=(vek,m,n)->Matrix(linalg[matrix](m,n,convert(vek,list)));

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

Reshape := proc (vek, m, n) options operator, arrow; Matrix(linalg[matrix](m,n,convert(vek,list))) end proc

>    A:=<<4,-1,0,-1,0,0>|<-1,4,-1,0,-1,0>|<0,-1,4,0,0,-1>|<-1,0,0,4,-1,0>|<0,-1,0,-1,4,-1>|<0,0,-1,0,-1,4>>;
b:=<30,20,60,30,20,60>;

A := Matrix(%id = 136871452)

b := Vector(%id = 135104212)

>    T:=LinearSolve(A,b);

T := Vector(%id = 134817544)

>    TM:=Reshape(T,2,3);

TM := Matrix(%id = 137136860)

>    TT:=Matrix(4,5,0);

TT := Matrix(%id = 136759556)

>    TT[2..3,2..4]:=TM:
TT;

Matrix(%id = 136759556)

>    vaaka:=<15|20|20|20|30>;
vasen:=<10,10>;
oikea:=<40,40>;

vaaka := Vector(%id = 134819624)

vasen := Vector(%id = 136804604)

oikea := Vector(%id = 136348704)

>    TT[1,1..-1]:=vaaka:

>    TT[4,1..-1]:=vaaka:
TT;

Matrix(%id = 136759556)

>    TT[2..3,1]:=vasen:
TT[2..3,5]:=oikea:
TT;

Matrix(%id = 136759556)

>    matrixplot(TT,axes=boxed);

[Maple Plot]

4.

>    restart: with(linalg): with(LinearAlgebra): alias(ref=GaussianElimination):alias(rref=ReducedRowEchelonForm):

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

Käsin laskien saadaan matriisi B:

>    B:=<<1,2,-1,3>|<-2,5,-4,1>|<5,-8,7,1>>;rref(B);

B := Matrix(%id = 138494028)

Matrix(%id = 135564156)

Vektorit ovat LRV, kaksi ensimmäistä ovat LRT ja virittävät saman, joten ne muodostavat kannan.
Harjoitellaan vielä osamatriisia ja todetaan erikseen kahden ekan LRT (vaikka se tuleekin jo edellisellä laskulla.)

>    B[1..4,1..-2];rref(%);

Matrix(%id = 135792508)

Matrix(%id = 138657472)

>    B[1..4,1..2]; # Tietysti voidaan tässä ottaa 1..2 yhtä helposti kuin 1..-2. Jälkimmäinen yleisempi.

Matrix(%id = 138780596)