Lineaarialgebra b, kevät 2019 Harjoitus 2 (ratkaisut osittain Maplella laskien) with(linalg): # linalg-paketin lataus Tehtävä 1. Suhteellisten nopeuksien algebraa: Yhteenlasku Määritellään (taas dyadiseksi) `&o` := (u,v) - (u + v)/(1+u*v/c^2); (1.1) u &o v; (1.2) Osoitetaan, että &o on sisäinen laskutoimitus välillä A := ]-c, c[. ( i ) Selvästi &o on funktio I x I - R. Että se on suljettu välillä A voidaan todistaa laskemalla, ks. http://cs.uef.fi/matematiikka/kurssit/lineaarialgebra/kurssimateriaali/ SuhteellisetNopeudet/LinearAlgebraOnRelativisticSpeeds.pdf Ehkä tässä riittää vakuuttua katsomalla dynaamista kuviota http://cs.uef.fi/matematiikka/kurssit/lineaarialgebra/kurssimateriaali/ LAText/OperValilla.htm A1. Kommutatiivisuus on selvä: u &o v = v &o u; (1.3) A2. Liitännäisyys hiukan hankalampi: vasena2 := (u &o v) &o w; (1.4) oikeaa2 := u &o (v &o w); (1.5)
vasena2 := simplify(vasena2); (1.6) oikeaa2 := simplify(oikeaa2); Selvästikin ovat samat. Mutta ainakin kaksi tapaa on selvittää asiaa Maplella (yms. systeemeillä): vasena2 - oikeaa2; 0 (1.7) (1.8) simplify(vasena2/oikeaa2); # toinen tapa "todistaa" (mutta mahdolliset nollalla jaot?) 1 (1.9) A3-A4. Neutraalialkio ja vasta-alkiot solve(u &o x = u, x); # onkohan "oikeanpuoleinen" nolla-alkio? 0 (1.10) 0 &o v; # kelpaako myös toisinpäin? v solve(u &o x = 0, x); (1.11) (1.12) (-u) &o u; 0 Neutraalialkio on 0 ja alkion u vasta-alkio on tavallinen vastaluku -u. Tehtävä 2. Suhteellisten nopeuksien algebraa: Skaalaus restart: `&sk` := (a,u) - c*tanh(a*arctanh(u/c)); (1.13) (2.1) a &sk u; (2.2) Nootti Maplen (ja Mathematican yms.) kehittäjille: Ei tanhin käänteisfunktio ole mikään arctanh vaan artanh! (latinasta: area tangens hyperbolicus) A8. 1*u = u kaikilla u välillä A = ]-c, c[? Tosi. Skalaarilla a = 1 kertominen menee päässälaskuna, koska tanh ja artanh ovat käänteisfunktioita! Maplekin osaa: 1 &sk u = u; (2.3) A7. a*(b*u) = (ab)*u? Tämä onkin metkempi juttu. Maplella tämä voi olla hankala, pitäisi osata sopivasti ohjailla?
vasena7 := a &sk (b &sk u); oikeaa7 := (a*b) &sk u; (2.4) Vain Mapleen tukeutuva ei saata nähdä, että vasena7 sisältää lausekkeen, jossa käänteisfunktiot "kumoavat toisensa" ja saadaan muuttujan vasena7 arvoksi: c*tanh(a*b*arctanh(u/c)); # eli juuri oikeaa7! (2.5) JATKUU DOKUMENTIN LOPUSSA, aksioomat A5 ja A6. Tehtävä 3. Virittääkö matriisijoukko avaruuden R^(2x2)? Tarkastellaan matriiseja restart; with(linalg): X := matrix([ [1, 2],[2, 3]]); (3.1) Y := matrix([ [-1, 2],[2, -3]]); (3.2) # jatka itse tähän ne kaksi muuta! Z := matrix([ [-3, -1],[-2, 3]]); (3.3) U := matrix([ [5, 8], [10,-9]]); (3.4) Määritellään mielivaltainen 2x2 -matriisi ja muodostetaan lineaarikombinaatioyhtälö A := matrix([[a, b],[c, d]]); (3.5) x*x + y*y + z*z + u*u = A; evalm(%); # pakotetaan auki (3.6)
(3.7) Poimitaan tuosta "käsin" yhtälöryhmä ja koetetaan selvittää Gaussilla onko se ratkeava tuntemattomien x, y, z ja u suhteen: R1 := x-y-3*z+5*u = a; R2 := 2*x+2*y-z+8*u = b; R3 := 2*x+2*y-2*z+10*u = c; R4 := 3*x-3*y+3*z-9*u = d; (3.8) R1 := R1; R2 := R2-2*R1; R3 := R3-2*R1; R4 := R4-3*R1; (3.9) R1 := R1; R2 := R2; R3 := R3 - R2; R4 := R4; (3.10) R1 := R1; R2 := R2; R3 := R3; R4 := R4 + 12*R3; (3.11) Yhtälöryhmä on nyt kolmiomuodossa (vakiokertoimia vaille porrasmuodossa), ja viimeisenä on yhtälö. Valitaan nyt vaikkapa ja muut nolliksi! Nähdään, ettei yhtälöryhmällä ole ratkaisua. Annettujen matriisien joukko ei siis riitä virittämään.
Tehtävä 4. Yksi muiden lineaarikombinaationa? restart; with(linalg): # matriisit kopioiden yltä tai uudelleen kirjoittamalla Kokeillaan voidaanko nollamatriisi esittää näiden lineaarikombinaationa: x*x + y*y + z*z + u*u = O. Jos jees, niin mitenkä? Silloin nimittäin se tai ne niistä, joiden kerroin ei ole nolla, voidaan esittää muiden lineaarikombinaationa! Määritellään siis 2x2 -nollamatriisi (iso O): O := # nollamatriisi tähän! isoo := matrix([[0, 0], [0,0]]); (4.1) x*x + y*y + z*z + u*u = isoo;# mitä? evalm(%); (4.2) (4.3) R1 := x-y-3*z+5*u = 0; R2 := 2*x+2*y-z+8*u = 0; R3 := 2*x+2*y-2*z+10*u = 0; R4 := 3*x-3*y+3*z-9*u = 0; R1 := R1; R2 := R2-2*R1; R3 := R3-2*R1; R4 := R4-3*R1; (4.4) R1 := R1; R2 := R2; R3 := R3 - R2; R4 := R4; (4.5)
(4.6) R1 := R1; R2 := R2; R3 := R3; R4 := R4 + 12*R3; (4.7) solve({r1,r2,r3,r4}, {x,y,z}); Tästä voidaan valita u = 1, x = -1, y = -2 ja z = 2, jolloin (4.8) evalm((-1)*x + (-2)*Y + 2*Z + 1*U); (4.9) Tästä nähdään, että mikä tahansa matriiseista voidaan esittää muiden avulla (siis ratkaista yhtälöstä (-1)*X + (-2)*Y + 2*Z + 1*U = O). Tehtävä 5. a) Joukko lineaarisesti riippumaton ja virittää joukon? b) Lineaarikombinaatioesitys polynomille a) Lineaarinen riippumattomuus ja viritys: restart: with(linalg): Warning, the protected names norm and trace have been redefined and unprotected map(assume, [a,b,c], real): # reaaliskalaarit nollaf := x - 0; p := x - 1 + x; q := x - 1 - x; r := x - x^2-2*x; (5.1) (5.2) Taas lineaarikombinaatio nerkitään nollaksi (nollafunktioksi): a*p(x) + b*q(x) + c*r(x) = nollaf(x); (5.3) VY0 := collect(%,x); # järjestellään termit (5.4)
solve({c = 0, a - b - 2*c = 0, a + b = 0}); # pitää olla nollapolynomi Warning, solve may be ignoring assumptions on the input variables. Siis polynomit ovat lineaarisesti riippumattomat. Toinen tapa: Wronskilla (jota ei saa kylläkään käyttää tällä kurssilla) M := [1 + x, 1 - x, x^2-2*x]; Käytetään käskyn viivästämistä 'det', jotta saadaan näkyviin mitä pitää laskea: 'det'(wronskian(m,x)) = det(wronskian(m,x)); # ei ole nolla! (5.5) (5.1.1) (5.1.2) Kokeillaan, löytyykö sopivat skalaarit, joilla saadaan esitetyksi mielivaltainen 2. asteen polynomi Pmv := x - u + v*x + w*x^2; (5.6) a*p(x) + b*q(x) + c*r(x) = Pmv(x); (5.7) Näiden erotus pitäisi olla nollafunktio sopivilla skalaareilla: a*p(x) + b*q(x) + c*r(x) - Pmv(x) = nollaf(x); collect(%,x); # kertoimien pitää olla nollia Nyt kertoimista saadaan yhtälöryhmä solve({ c - w = 0, a - b - 2*c - v = 0, a + b - u = 0}, {a,b,c}); Warning, solve may be ignoring assumptions on the input variables. (5.8) (5.9) (5.10) Viritys on totta, koska a, b ja c voitiin ratkaista (tietysti niistä tulee kertoimista u, v ja w riippuvat). b) Lineaarikombinaation ja annetun polynomin erotuksen pitää olla nolla kaikilla x, joten YHT5b := c1*(1 + x) + c2*(1 - x) + c3*(x^2-2*x) - (2*x^2-4*x - 3) = 0; (5.11) collect(yht5b,x); (5.12) kertoimet5b := solve({c3-2 = 0, c1-c2+4-2*c3 = 0, c1+c2+3 = 0},
{c1,c2,c3}); (5.13) Tarkastus sijoittamalla: (-3/2)*(1+x) + (-3/2)*(1-x) + 2*(x^2-2*x); (5.14) Tehtävä 6. Funktiojoukko a) Sopiva perusavaruus esimerkiksi C(]0, ),R). Tällöin ei muuten pidä sijoittaa alempana nollaa eikä negatiivisia arvoja x:lle! Voitaisiin valita myös F(R \ {0}, R), jolloin saisi sijoittaa myös negatiivisia arvoja. restart: with(linalg): Warning, the protected names norm and trace have been redefined and unprotected Määritellään funktiot: f[1] := x - 1; f[2] := x - 1/x; f[3] := x - 1/x^2; f[4] := x - 1/x^3; lineaarisesti riippumaton b) Lineaarinen riippumattomuus: muodostetaan lineaarikombinaatio LK6 := x - c1*f[1](x) + c2*f[2](x) + c3*f[3](x) + c4*f[4](x); (6.1) (6.2) YR6 := {seq(subs(x = k, LK6(x)) = 0, k = 1..4)}; # sijoitukset x = 1,2,3,4 (6.3) solve(yr6); Funktiot ovat siis lineaarisesti riippumattomia. c) Funktion u, jolle (6.4) u(x) =, kuuluminen viritettyyn aliavaruuteen tarkoittaa sitä, että se voidaan esittää annettujen funktioiden lineaarikombinaationa. Tässä asia onkin helppo: u := x - 1/x^2*(x^2+1); (6.5)
(6.5) expand(u(x)); (6.6) Näin ollen u =. Siis u on joukossa [U] =. v := x - f[2](x)*f[4](x); simplify(v(x)); 1 x 4 (6.7) Onko nyt olemassa kerroinskalaarit, joille kaikilla x olisi VY := c1*f[1](x) + c2*f[2](x) + c3*f[3](x) + c4*f[4](x) = v(x); (6.8) Kokeillaan sopivilla positiivisilla arvoilla x neljää yhtälöä: R1 := subs(x = 1, VY); R2 := subs(x = 1/2, VY); R3 := subs(x = 1/3, VY); R4 := subs(x = 1/4, VY); solve({r1,r2,r3,r4}); (6.9) (6.10) Eipä saatu näillä toivottua tulosta, ettei ole ratkaisua. Mutta lisätään yhtälöitä: R1 := subs(x = 1, VY); R2 := subs(x = 1/2, VY); R3 := subs(x = 1/3, VY); R4 := subs(x = 1/4, VY); R5 := subs(x = 1/5, VY); (6.11) solve({r1,r2,r3,r4,r5}); # Maple ei anna ratkaisua,mutta mitä se
meinaa... Varmistetaan Gaussilla: R1 := R1; R2 := R2 - R1; R3 := R3 - R1; R4 := R4 - R1; R5 := R5 - R1; (6.12) R1 := R1; R2 := R2; R3 := R3-2*R2; R4 := R4-3*R2; R5 := R5-4*R2; (6.13) R1 := R1; R2 := R2; R3 := R3; R4 := R4-6/2*R3; R5 := R5-12/2*R3; (6.14) R5 := R5-24/6*R4; Tulihan se sieltä! Yhtälöryhmällä ei ole ratkaisua, joten funktio v, 'v(x)' = v(x); (6.15) (6.16) ei ole joukossa [U]. Olisi toinenkin tapa: Osoittaa joukko lineaarisesti riippumattomaksi, jolloin yhtäkään noista (erityisesti funktiota v) ei voi esittää muiden lineaarikombinaationa. Se sujuisi samaan tapaan kuin kohta b), viidellä eri pisteellä kylläkin. Tehtävä 7. Kannan Määritelmää 12.1.1 käyttäen a) On kanta. Määritellään vektorit u1, u2 ja u3 sekä nollavektori nollav ja testivektori x: with(linalg): u1 := vector([5,4,1]); u2 := vector([3,-2,1]);
u3 := vector([3,3,1]); (7.1.1) nollav := vector([0,0,0]); x := vector([x1,x2,x3]); # mielivaltainen "testivektori" (7.1.2) Muodostetaan taas yhtälöryhmät student-paketin equate-käskyllä: with(student); (7.1.3) YR7a := equate(evalm(c1*u1 + c2*u2 + c3*u3), nollav); solve(yr7a,{c1,c2,c3}); (7.1.4) (7.1.5) Siis vektorijoukko U = {u1, u2, u3} on lineaarisesti riippumaton. Toiseksi viritys: ratkeaako c1*u1 + c2*u2 + c3*u3 = x kaikilla x in R^3? YRViritys := equate(evalm(c1*u1+c2*u2+c3*u3), x); (7.1.6) solve(yrviritys, {c1, c2, c3}); (7.1.7) Yhtälöryhmä on ratkeava; siis U myös virittää :n. Tällöin jokainen vektori voidaan esittää vain yhdellä tavalla, joten [1, 3, 5] saadaan vain arvoilla subs({x1 = 1, x2 = 3, x3 = 5},%); (7.1.8) b) Ei ole kanta. Se on nimittäin lineaarisesti riippuva. Määritelmän mukaan: v1 := vector([2,3,1]); v2 := vector([5,3,2]); v3 := vector([2,1,2]); v4 := vector([0,1,0]); nollav := vector([0,0,0]);
(7.2.1) YR7b := equate(evalm(c1*v1 + c2*v2 + c3*v3 + c4*v4), nollav); (7.2.2) solve(yr7b,{c1,c2,c3}); (7.2.3) Voidaan siis valita esimerkiksi c4 = 11, jolloin c1 = -6, c2 = 2, c3 = 1 ja -6v1 + 2v2 + v3 + 11v4 = nollavektori (tarkasta!) Entä annetun vektorin (1 3 5)^T esittäminen? Määritellään siis: b := vector([1,3,5]); (7.2.4) Koska yhtälöryhmästä (taas vektoriyhtälö muunnetaan yhtälöryhmäksi) YResitys := equate(evalm(c1*v1 + c2*v2 + c3*v3 + c4*v4), b); (7.2.5) tulee alimäärätty ja epähomogeeninen, teoriamme ei sano muuta kuin, että esittäminen ei onnistu lainkaan tai onnistuu äärettömän monella tavalla. Yksi keino olisi tietysti koettaa jättää yksi vektoreista pois, ja näyttää jäljelle jäänyt kannaksi (jos vain onnistuu!). Silloin esittäminen onnistuu tietysti myös joukon V avulla, ja tapoja on äärettömästi. Mutta voidaan tehdä suoraan esimerkiksi: 1) viemällä yhtälöryhmä porrasmuotoon ja katsomalla ettei tule ristiriitaisia yhtälöitä. 2) kylmästi ratkaisemalla yhtälöryhmä: solve(yresitys,{c1,c2,c3}); # ratkeaako? (7.2.6) Kyllä ratkeaa! Pystyvektori (1 3 5)^T voidaan esittää äärettömän monella tavalla, koska c4 voi olla mikä vain ja yllä olevien sijoittaminen lineaarikombinaatioon tuottaa: evalm(subs(%, c1*v1 + c2*v2 + c3*v3 + c4*v4)); (7.2.7) Jatkoa tehtäviin 1 ja 2: Suhteellisten nopeuksien lineaariavaruus Axiom A5: Perhaps more difficult with Maple. But let us try using the original operations &o and &sk: restart; assume(c 0); additionally(-c < u, u < c, -c < v, v < c); assume(a, real), assume(b, real); `&o` := (u,v) - (u + v)/(1+u*v/c^2); (8.1.1)
(8.1.1) u &o v; (8.1.2) `&sk` := (a,u) - c*tanh(a*arctanh(u/c)); (8.1.3) a &sk u; (8.1.4) lefta5 := a &sk (u &o v); (8.1.5) righta5 := (a &sk u) &o (a &sk v); (8.1.6) simplify(lefta5 - righta5); # try these first! (8.1.7) expand(lefta5 - righta5); # does not help! (8.1.8) Direct approach does not help in Maple. Lets do some conversions in representations: use lefta5 := convert(lefta5,exp); # exponential function (8.1.9)
(8.1.9) lefta5 := convert(lefta5,ln); # natural logarithm (8.1.10) lefta5 := simplify(lefta5); (8.1.11) righta5 := convert(righta5, exp); (8.1.12) righta5 := convert(righta5, ln); (8.1.13) righta5 := simplify(righta5); (8.1.14) lefta5; (8.1.15) difference := lefta5 - righta5; (8.1.16) We have showns (!) that the system is a linear space! Axiom A6: lefta6 := (a + b) &sk u; (8.2.1) lefta6 := simplify(convert(lefta6,exp)); (8.2.2)
(8.2.2) lefta6 := simplify(convert(lefta6,ln)); (8.2.3) righta6 := (a &sk u) &o (b &sk u); (8.2.4) righta6 := simplify(convert(righta6,exp)); (8.2.5) righta6 := simplify(convert(righta6,ln)); (8.2.6) lefta6; (8.2.7) lefta6 - righta6; 0 (8.2.8)