Lineaarialgebra a, kevät 2019 Kotilaskut 1 yms. Maple:lla Tämä on vanha Maple 6 -versio, joka avautunee uudemmissa - kuten Maple 2018 - Classic Worksheet - versiona. Työarkkien yhteensopivuus taaksepäin ei yleensä onnistu suoraan! Klikkaa auki plussasta (Maple-versio 6) tai kolmiosta (Maple-versio 9) 0. Ihan alkeita 4 + 7; 11 (1.1) 2^100; 1267650600228229401496703205376 (1.2) 18/3 * 2; 12 Lausekkeelle voi antaa nimen määrittelykäskyllä: L := x^2 + 4*x - 1; Yhtälön ratkaisemista: solve(l = 0, x); (1.3) (1.4) (1.5) K := sin(x)^2 - cos(x)^2 = 0; solve(k, x); solve(x^2 - y^2 = 1, x); solve(x^2 - y^2 = 1, {x,y}); (1.6) (1.7) (1.8) (1.9) solve(x^2 - y^2 = 1, y); 1. Kotitehtävät (1.10) Tehtävä 1. Yhtälöryhmät restart; a) Käskyllä solve, jolla on kaksi argumenttia (yhtälöiden joukko, tuntemattomien joukko): R1 := 6*x - y = 3; R2 := 3*x - 4*y = 6; solve({r1, R2}, {x, y}); (2.1) (2.2)
(2.2) y1 := solve(r1,y); y2 := solve(r2, y); (2.3) plot({y1,y2}, x = -2..2, y = -2..2); b) Samoin yritetään (luettavuuden vuoksi voidaan Shift-Enterillä jakaa käsky eri riveille): R1 := 2*x - 2*y + 3*z = 3; R2 := 4*x + 2*y - 6*z = -1; (2.4) solve({r1, R2}); # yhtälöryhmä annetaan joukkona (2.5) solve({r1, R2}, {x,y,z}); # samoin muuttujat, jos useampi (2.6) Kun on äärettömästi ratkaisuja, voidaan kontrolloida esitysmuotoa vaikkapa näin:
solve({r1, R2}, {y,z}); solve({r1, R2}, {x,y}); (2.7) (2.8) Jos tarvis, näin saadaan likiarvoiset ratkaisut vaikkapa 3 merkitsevällä numerolla: evalf(%,3); (2.9) z1 := solve(r1, z); z2 := solve(r2, z); (2.10) plot3d({z1,z2}, x = -5..5, y = -5..5, axes = boxed); Tehtävä 2. Yhtälöryhmät restart; a) Yritetään taas ratkaista, mutta hiukan suoremmin: yhtalot := {5*s - t = 3, 2*s + 2*t = 1, 3*s + t = 1}; (3.1)
solve(yhtalot,{s,t}); Ei ehkä ole ratkaisua (?), koskapa Maple ei mitään anna ulos. Testataanpa mitä Maple sanoo seuraavaan, jolla ei varmasti ole ratkaisua: solve({s - t = 2, s - t = 3},{s,t}); # ei nytkään vastaa mitään Käytetään tässä implicitplottia: with(plots): implicitplot(yhtalot, s = -1..1, t = -1..1); (3.1) b) Yhtälöryhmä voidaan toki antaa solve-käskylle suoraankin niitä nimeämättä, mutta yhtä kaikki joukkona: solve({ 4*x1-2*x2 + 2*x3 = 18, 6*x1 + 2*x2-6*x3 = -4, 2*x1 + x2 + x3 = 11},{x1,x2,x3}); (3.2) Tehtävä 3. Yhtälöryhmät restart; a) Helppoa kuin mikä:
b) Hankalampi: solve({6*x + 3*y - 1 = 0, 4*x + 2*y = a},{x,y}); solve({4*x - 2*y = 4,-6*x + 3*y +3 = -3}); solve({6*x + 3*y - 1 = 0, 4*x + 2*y = a}); # nk. kokonaisratkaisu (4.1) (4.2) solve({6*x + 3*y - 1 = 0, 4*x + 2*y = 2/3}, {y}); (4.3) Suorat ovat yhdensuuntaiset. Ratkaisuja on vain kun, jolloin suorat ovat samat. Tehtävä 4. Yhtälöryhmät restart; a) Saadaan liiankin tarkoilta näyttäviä arvoja: solve({ 3.6*x - 2.2*y = 2.6, -1.3*x - 2.2*y = 8.2},{x,y}); evalf(%,2); b) Tämä sentään menee hyvin: solve({ 400*x + 800*y + 1000*z = 400, 40*x + 10*y + 10*z = 20, 4*x - 8*y - 4*z = -4}, {x,y,z}); (5.1) (5.2) (5.3) Lasketaan tämä malliksi Gauss-Jordanin menetelmällä. Vaihdetaan kuitenkin ensin yhtälöiden järjestystä, mikä helpottaa sopivien kerrointen löytämistä päässälaskuna: R1 := 4*x - 8*y - 4*z = -4: R2 := 40*x + 10*y + 10*z = 20: R3 := 400*x + 800*y + 1000*z = 400: GAUSSIN VAIHE I (emme voi käyttää pilkkuja, kuten R1', mutta näin onnistuu) R1 := R1; # nämä vastaavat Gaussin kirjanpitoa R2 := R2-40/4*R1; R3 := R3-400/4*R1; (5.4) Tässä menettelyssä on kuitenkin se ongelma, että alkuperäiset rivimerkinnät Ri "unohtuvat", ja jos tulee virhe, on paras aloittaa prosessi alusta korjatuilla operaatioilla.
Jatka tästä GAUSSIN VAIHE II: R1 := R1; R2 := R2; R3 := R3-1600/90*R2; (5.5) Ja skaalaus vie porrasmuotoon: R1 := 1/4*R1; R2 := 1/90*R2; R3 := 9/4600*R3; (5.6) Tästä voitaisiin laskea takaisinsijoituksella myös y ja x, mutta tehdäänpä vielä "Jordan"-osa: R1 := R1 - (-1)*R3; R2 := R2-5/9*R3; R3 := R3; # tukirivi (5.7) Ja vielä tukena keskimmäinen: R1 := R1 - (-2)/1*R2; R2 := R2; R3 := R3; (5.8) Tehtävä 5. Vektoriyhtälö Kaikki ensin samalle puolelle:
restart; yht5 := [x,y,z] + [2*z,x,3*y] + [4*y,3*z,x+z] - [z,4+y,3*y] = [0,0,0]; Tässä ei ole (tarkasti ottaen) kyse Maple-vektoreista; ne pitäisi juhlallisesti määritellä käskyllä vector (ks. Help). Nämä ovat listoja, mutta homma toimii näinkin. Poimitaan "manuaalisesti" yhtälöjoukko koordinaateittein: yhtjoukko5 := {z+4*y+x = 0, -4+3*z+x = 0, 2*z+x = 0}; (6.1) (6.2) ratk5 := solve(yhtjoukko5); (6.3) Tarkastus sijoituskäskyllä subs (sanasta substitute): subs(ratk5,yht5); (6.4) Tehtävä 6. Ei-ekvivalentit yhtälöryhmät Järjestetään niin, että yhtälöryhmällä I on vain yksi ratkaisu,, mutta toisella enemmän: restart; arvot6 := {a=1, b=0, c=1, e=1, d=0, f=1, alpha=1, beta=1}; # sijoittamista varten (7.1) YR1 := subs(arvot6,{a*x + b*y = c, d*x + e*y = f}); # yhtälöryhmä onkin nyt tää: (7.2) solve(yr1,{x,y}); # ja ratkaisu tietysti Nyt sama sijoitus toiseen yhtälöryhmään antaa äärettömästi ratkaisuja, äskeisen ja esimerkiksi {x = 2, y = 2}, sillä YRII := subs(arvot6, {(a - beta*d)*x + (b - beta*e)*y = c - beta*f, (d - alpha*a)*x + (e - alpha*b)*y = f - alpha*c}); (7.3) (7.4) solve(yrii,{x,y}); (7.5) Voitaisiin osoittaa, että ei-ekvivalenttius on kiinni lukujen ja valinnoista niin, että pitää olla. Omatoimista tutkailua 2. Aritmetiikkaa, alkeisfunktioita, likiarvot, lausekkeet Maplessa työskentely on tavallisimmin "vuorovaikutteista"; käyttäjä käskee kirjoittamalla syötteitä, Maple laskee ja tulostaa.
Aritmetiikkaa restart; 3 + 5*2 + (a^2)^4; (8.1.1) Alkeisfunktioita restart; exp(x); e x (8.2.1) exp(ln(x)); ln(exp(x)); x (8.2.2) cos(x)^2 + sin(x)^2; (8.2.3) simplify(cos(x)^2 + sin(x)^2); 1 cos(x)^2 - sin(x)^2; simplify(cos(x)^2 - sin(x)^2); cosh(x)^2 - sinh(x)^2; simplify(cosh(x)^2 - sinh(x)^2); 1 simplify(cosh(x)^2 + sinh(x)^2); (8.2.4) (8.2.5) (8.2.6) (8.2.7) (8.2.8) (8.2.9) Likiarvon laskeminen luku := sin(1); (8.3.1) evalf(luku); 0.8414709848 (8.3.2) exp(i*pi/2); I (8.3.3) exp(i*0.3*pi); (8.3.4) evalc(exp(i*0.3*pi)); (8.3.5)
evalf(exp(i*0.3*pi)); (8.3.6) Lausekkeiden käsittelyä simplify((x-1)^2 + (x+2)^2); (8.4.1) lauseke := (x-a)^3; expand(lauseke); tekijat := factor(x^4-10*x^3 + 35*x^2-50*x + 24); tekijat; expand(tekijat); (8.4.2) (8.4.3) (8.4.4) (8.4.5) (8.4.6) 3. Funktiot, listat, piirtely Maple-käskyjen tavallisimmat rakenteet ovat (tällaisinaan eivät tietysti tuota mitään mielekästä!) jokinmuuttuja := jokinkäskytaifunktio(muuttujat); Esimerkki 1. Peruspiirtelyä jokinkäskytaifunktio(muuttuja1, muuttuja2, etc); # ja tässä saa olla kommentti, jota ei suoriteta jokinmuuttuja := jokinlauseke;?plot #?-merkki vie Helppiin! plot(x^2, x = -2..2, y = 0..6);
plot(1/x, x = -2..2);
Tehtävä 1: Muunna ylläoleva piirtokäsky niin, että se tuottaa paremman kuvion. plot(1/x, x = -4..4, y = -4..4);
Piirretään vielä käyräparvia: plot([x^2, x^3, x^4], x = -2..2, y = -4..4);
ft := seq(x^k, k = 1..10); (9.1) {ft}; [ft]; (9.2) plot([ft], x = -1..1, scaling=constrained);
Esimerkki 2. Funktion määrittely f := x - 2*(x-1)*cos(x); (9.3) f(0); f(pi); f(2*a); plot(f); (9.4) (9.5) (9.6)
plot(f, scaling = constrained);
Tehtävä 2: Piirrä edellisen funktion f kuvaaja välillä [0, 2 ]. plot(f, 0..2*Pi, scaling = constrained);