Lineaarialgebra a, kevät 2018 Harjoitusta 2, mm. Maplella restart; # unohduttaa aikaisemmat asiat Maplen muistista with(linalg); # lataa lineaarialgebraan liittyviä Maplefunktioita (1) Tehtävä 1. Yhtälöryhmien ekvivalenttius (todistustehtävä) Aluksi tutkiskelua: YRI := {c = a*x + b*y, f = d*x + e*y}; (1.1) solve(yri,{x,y}); (1.2) YRII := {a*x + b*y = c,(d-alpha*a)*x + (e-alpha*b)*y = f- alpha*c}; solve(yrii,{x,y}); (1.3) (1.4) Yhtälöryhmien ratkaisut näyttävät samoilta, mutta ongelmana ovat ne monet tapaukset, joissa ae - bd = 0. Todistus, joka on vapaa nolluustarkasteluista: Ensiksikin, yhtälöryhmissä on samat tuntemattomat x ja y. Toiseksi, osoitetaan yhtälöryhmien ratkaisujoukot RI ja RII samoiksi, siis toistensa osajoukoiksi. a) Ensimmäisen yhtälöryhmän I ratkaisut ovat myös toisen ratkaisuja. Olkoon pari (, ) yhtälöryhmän I ratkaisu. Koetetaan sijoittaa ensimmäisen yhtälöryhmän tieto toiseen: sijoitusi := {x = x[1], y = y[1]}; (1.5)
toteutuvati := subs(sijoitusi,yri); sijyrii := subs(sijoitusi,yrii); simplify(subs(toteutuvati,sijyrii)); (1.6) (1.7) (1.8) mikä siis toteutuu! b) Toisen yhtälöryhmän II ratkaisut (, ) ovat ensimmäisenkin ratkaisuja. Tämä on Maplesijoittelulla hankalampaa, joten tehdään toisin. Tiedetään siis, että (*) ja (**). Täten yhtälöryhmän I eka yhtälö (samana) toteutuu. Toista varten ratkaistaan yllä olevasta (**) - ottaen huomioon myös yhtälön (*) - = = = f. Siis myös toinen yhtälöistä I toteutuu. Näin ratkaisujoukot on todettu samoiksi, ja siten yhtälöryhmät ovat yhtäpitävät eli ekvivalentit. Tehtävä 2. Mitkä tuntemattomat voidaan valita mielivaltaisesti? a)-kohta: Viedään restart; with(linalg): x := vector(4); print(x); # vektoria x tarvitaan vasta ratkaisun lopulla! (2.1) R1 := 2*x[1] - 2*x[2] - 3*x[3] + 2*x[4] = 3; R2 := 2*x[1] - 2*x[2] + 4*x[3] + 6*x[4] = 2; R3 := 3*x[1] - 3*x[2] + 2*x[3] + 2*x[4] = -3; (2.2) Gaussin prosessilla porrasmuotoon (Maplessa ei voi tässä käyttää mitään pilkkuja Ri'): # R1 saa edeltävän arvonsa R2 := R2 - R1; R3 := R3-3/2*R1; (2.3)
R2 := R2; R3 := R3-13/2/7*R2; (2.4) R1 := 1/2*R1; R2 := 1/7*R2; R3 := -7/33*R3; (2.5) Tästä näkyy, että ei ole vapaa, ei myöskään silloin. Kumpi tahansa tai (vain yksi!) voidaan valita mielivaltaisesti. b)-kohta: Takaisinsijoitus, tai vaikka Maple, ottaen huomioon kohdan a) tulos: solve({r1,r2,r3}, {x[1],x[3],x[4]}); (2.6) Valitaan, jolloin sij2 := {x[2] = t}; ratk2 := subs(sij2, solve({r1,r2,r3},{x[1],x[3],x[4]})); (2.7) (2.8) evalm(x) = subs(ratk2 union sij2,evalm(x)); (2.9) Vektorimuotoon vielä, tee itse! Tehtävä 3. Gaussin menetelmä Maplea käyttäen a)-kohta restart; with(linalg): x := vector(4); (3.1) R1 := x[1] + x[2] + 2*x[3] + 3*x[4] = 6; R2 := 2*x[1] - 4*x[2] - 4*x[3] - 4*x[4] = 0; R3 := x[1] + 6*x[2] - 3*x[3] + 4*x[4] = 1;
(3.2) R2:= R2-2*R1; R3 := R3-1*R1; (3.3) R2:= R2; R3 := R3 - (5/(-6))*R2; (3.4) R2:= -1/6*R2; R3 := -3/35*R3; Tämä on porrasmuoto, josta nähdään, että x4 voidaan valita mielivaltaisesti. Arvot x3, x2 ja x1 saadaan takaisinsijoituksella: solve(subs({x[4] = t}, R3), x[3]); # ratkaistaan x[3] = (3.5) (3.6) solve(subs({x[4] = t, x[3] = -22/35*t+9/7},R2),x[2]); # sitten x[2] = (3.7) solve(subs({x[4] = t, x[3] = -22/35*t+9/7, x[2] = -29/35* t+2/7}, R1), x[1]); # ja lopulta x[1] = (3.8) Ratkaisu on yksiparametrinen joukko, suora x = [,,, ], t in R. b)-kohta restart; R1 := x[1] - x[3] - 2*x[4] = -2:
R2 := 2*x[1] - x[2] - x[3] + 2*x[4] = 7: R3 := 3*x[1] - 3*x[2] + x[3] - x[4] = 4: R4 := 4*x[1] + 4*x[2] - 3*x[3] + 2*x[4] = 31: R2:= R2-2*R1; R3 := R3-3*R1; R4 := R4-4*R1; (3.9) R2:= R2; R3 := R3-3*R2; R4 := R4 + 4*R2; (3.10) R2:= R2; R3 := R3; R4 := R4-5*R3; (3.11) R2:= -1*R2; R3 := R3; R4 := (1/99)*R4; (3.12) Tämä on porrasmuoto, josta x[3] = solve(subs({r4}, R3), x[3]); (3.13) x[2] = solve(subs({r4,%}, R2), x[2]); x[1] = solve(subs({r4, %, %%},R1 ), x[1]); # %% viittaa "toissatulokseen"! (3.14) (3.15) takaisinsijoitus antaa:
Tehtävä 4. Rivioperaatioilla porrasmuotoon ja sitten redusointi lopusta alkaen restart; with(linalg): x := vector(4); print(x); (4.1) R1 := 2*x[1] + 2*x[2] - 2*x[3] = 1; R2 := 4*x[1] + 2*x[2] - 2*x[3] - 3*x[4] = 4; R3 := 2*x[1] - x[2] - 3*x[3] - 2*x[4] = -2; (4.2) R2:= R2-2*R1; R3 := R3-1*R1; (4.3) R2:= R2; R3 := R3-3/2*R2; (4.4) R1 := 1/2*R1; R2:= -1/2*R2; R3 := -1/4*R3; (4.5) Tämä on porrasmuoto. Edelleen eliminoidaan johtavan x3:n yläpuoli: R1 := R1 - (-1)*R3; R2 := R2 - (-1)*R3; R3 := R3;
(4.6) R1 := R1 - R2; R2 := R2; R3 := R3; (4.7) Nähdään, että voidaan valita vapaasti ja muut ratkaista sen avulla: solve(subs({x[4] = t}, R3), x[3]); # ratkaistaan x[3] = (4.8) solve(subs({x[4] = t, x[3] = 5/8*t+3/2},R2),x[2]); # sitten x[2] = (4.9) solve(subs({x[4] = t, x[3] = 5/8*t+3/2, x[2] = -7/8*t+1/2}, R1), x[1]); # ja lopulta x[1] = (4.10) Ratkaisu: Vektorimuodossa (toimii vain, jos x oli edellä määritelty 4-vektoriksi): evalm(x) = subs({x[1] = 3*t/2+3/2, x[2] = -7*t/8+1/2, x[3] = 5*t/8+3/2, x[4] = t},evalm(x)); (4.11) Tehtävä 5. Mahdollisia ja mahdottomia matriisien laskutoimituksia restart; with(linalg): A := transpose(matrix(2,3,[4,2,-3,-2,-1,2])): # yksi tapa määritellä B := matrix([[2,-4], [3,-1]]): # toinen tapa riveittäin C := matrix(1,2, [4, -2]):
De:= matrix(1,3, [2, -3, 5]): print(a, B, C, De); (5.1) Vain kohdat d), e) ja f) ovat kelvollisia dimensioiltaan (selvitä muiden viat tarkemmin!) ja tulokset ovat map(evalm,[b &* transpose(a), C&*B, transpose(de)&*c]); (5.2) Tehtävä 6. Matriisien laskusääntöjen pohdiskelua restart; with(linalg): A := matrix([[3,-2],[2,4]]): B := matrix([[5,2],[-1,-3]]): print(a,b); (6.1) a) Tässä osaset laskettuina: map(evalm,[ A^2, B^2, A &* B, (A+B)^2, A^2+2*A&*B+B^2, (A+B)^2 -(A^2+2*A&*B+B^2)]); (6.2) b) Tässä osaset laskettuina: map(evalm,[ A-B, A+B, (A-B)&*(A+B), A^2, B^2, A^2-B^2, (A-B)&*(A+B) - (A^2-B^2)]); (6.3) print(evalm(a &* B), evalm(b &* A)); # ei-vaihdannaiset (6.4)
Kohtien a) ja b) erotustenhan pitäisi olla nollia, jos normaalit lukujen laskusäännöt pätisivät. Mutta kun ei ole, jotain on pielessä. Koko homma on kiinni kertolaskun vaihdannaisuuden puuttumisesta (ks. yllä). Onko se ainut syy? Matriisien laskusääntöjen (Lause 3.3.2) avulla voidaan laskea: = = =, joten supistelemalla yhteenlaskussa (siis vähennyslaskulla) saadaan - ( ) =. Kohdassa b) taas = ja siten - ( ) =. Yllättävä käytös juontaa siis juurensa täsmälleen ei-vaihdannaisuudesta. Tehtävä 7. Vastaesimerkit tulon nollasäännölle ja tulon supistussäännölle yhtälössä Käy esimerkiksi hyvinkin yksinkertaisilla matriiseilla: A := matrix(3,3,[1,0,0,0,0,0,0,0,0]): B := matrix(3,3,[0,0,0,0,1,0,0,0,0]): C := matrix(3,3,[0,0,0,0,0,0,0,0,1]): print(a,b,c); (7.1) multiply(a,b); (7.2) multiply(a,c), multiply(b,c); # samat tulot (7.3) Tehtävä 8. Lineaarialgebra alkutesti Moodlessa.