MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko Tehtävä (L): Käynnistä Matlab-ohjelma ja kokeile laskea sillä muutama peruslaskutoimitus: laske jokin yhteen-, vähennys-, kerto- ja jakolasku. Laske myös, 3 sin(π/3), e / ja 783. Ratkaisu: Esimerkki yhteen- ja vähennyslaskusta, kertolaskusta ja jakolaskusta: >> +3-3 >> 3*3 9 >> 3/.5000 Yllä käytettyjä merkkejä "*"ja "/"käytetään Matlabissa matriisien kerto- ja jakolaskuihin, matriisien alkioiden käsittelyyn käytetään komentoja ".*"ja "./". Skalaareilla molemmat muodot toimivat samalla tavalla. >> ^ 638 >> 3*sin(*pi/3).598 >> exp(/).687 >> sqrt(783) 88.5607
Tehtävä (L): Kolmiulotteisen reaaliavaruuden R 3 pisteitä merkitään usein antamalla koordinaatit kolmen alkion pituisena pystyvektorina. Matlab-ohjelmalla tämä tapahtuu syöttämällä esimerkiksi» v=[; ; 3] a) Luo jotkin R 3 :n vektorit u ja v. Laske sitten näiden summa, erotus ja jokin muu lineaarikombinaatio, eli muotoa a*u+b*v oleva lauseke, jossa a ja b ovat valitsemasi vakiokertoimet. b) Pystyvektorista saat vastaavan vaakavektorin komennolla» v Mitä tapahtuu, jos kerrot vektorin itsellään? Entä jos kerrot pystyvektorin jommalta kummalta puolelta vastaavalla vaakavektorilla? Miten saat vektorin, jonka jokainen alkio on korotettu toiseen potenssiin? Ratkaisu: a) >> v=[; ; 3]; >> u=[; ; ]; >> u+v 3 >> v-u 0 >> 8*v-3*u 5 3
b) >> v*v Error using * Inner matrix dimensions must agree. Kuten aikaisemmin mainittu, muotoa A*B oleva lauseke on Matlabissa matriisikertolasku, joka on määritelty vain jos A:ssa on yhtä monta saraketta kuin B:ssä on rivejä. Yllä tämä ehto ei toteudu, joten Matlab antaa virheilmoituksen. Seuraavissa ehto toteutuu: >> v*v >> v *v 3 6 3 6 9 3x- ja x3-matriisien kertolasku tuottaa 3x3-matriisin, x3- ja 3x-matriisien kertominen taas x-matriisin eli skalaarin. Vektorin kaikki alkiot voidaan korottaa toiseen potenssiin kolmella eri tavalla: >> v.*v 9 >> v.^ 9 3
>> power(v,) 9 A.*B-muotoinen lauseke kertoo matriisien A ja B alkiot keskenään, tässä tapauksessa siis vektorin u alkiot itsellään. A.ˆb ja power(a,b) korottavat molemmat A:n kaikki alkiot potenssiin b. Tehtävä 3 (P): Matlab on vektori- ja matriisilaskentaohjelmisto, joten se operoi hyvin pitkälti vektorien ja matriisien (näihin perehdymme ensi viikosta alkaen) avulla. Funktion kuvaajat Matlab piirtää siten, että toisessa vektorissa annetaan laskentapisteet ja toisessa datapisteet. Siis esimerkiksi funktion f(x) = sin(x) kuvaaja välillä [ π, π] saadaan piirrettyä komentamalla >> x = -pi:.:pi; >> y = sin(x); >> plot(x,y) Piirrä nyt funktioiden g(x) = x ja h(x) = x 3 x kuvaajat välillä [, ], sopivalla askelpituudella. Saatko ne piirrettyä samaan kuvaan? Tallenna kuva ja tulosta se tehtäväsi liitteeksi. Ratkaisu: Määritellään ensin laskenta- ja datapisteet: >> x=-:.:; >> g=x.^; >> h=x.^3-x; Kuvaajat piirretään käskyillä plot(x,g) ja plot(x,h). Samaan kuvaan kuvaajat saadaan käskyllä plot(x,g,x,h) tai >> plot(x,g) >> hold on >> plot(x,h)
Tehtävä (P): Luonnollisesti voimme piirtää myös kolmiulotteisia kuvia eli pintoja. Ideana tällöin on, että jokaiseen xy-tason pisteeseen on liitetty yksi arvo, joka määrittelee pinnan korkeuden sillä kohdalla. Nyt tarvitaan xy-tason pisteverkko ja data-arvot, jotka annetaan taulukoina. Esimerkiksi >> [X,Y] = meshgrid(-8:.5:8); >> Z = X.^-*Y.^; >> mesh(x,y,z) luo xy-tason pisteverkon, laskee kussakin näistä pisteistä funktion f(x, y) = x y arvon ja piirtää pinnan. Piirrä nyt jonkin itse valitsemasi kahden muuttujan funktion kuvaaja, eli mahdollisimman hieno pinta! Tallenna kuva ja tulosta se tehtäväsi liitteeksi, merkitse mukaan myös komennot, joilla kuva on piirretty. Lisäapuja voit katsoa Matlabin manuaalista. Ratkaisu: Pisteverkko ja datapisteet määritetään kuten tehtävänannossa, kuvaaja piirretään mesh(x,y,z)- komennolla. Esimerkki: >> [X,Y] = meshgrid(-5:.5:5); >> Z=X.^- *Y.^; >> mesh(x,y,z) Tämä tuottaa seuraavanlaisen kuvaajan: 5
Tehtävä 5 (L): a) Ovatko vektorit u = (,, ) ja v = (,, ) kohtisuorassa toisiaan vastaan? Jos eivät, mikä on niiden välinen kulma? b) Anna napakoordinaatiston pisteet (, π/3) ja (, π/6) karteesisissa koordinaateissa. Tarkista piirtämällä kuva. Ratkaisu: a) Lasketaan pistetulo: u v = ( ( )) + (( ) ) + ( ) = koska u v 0, eivät vektorit ole kohtisuorassa toisiaan vastaan. Niiden välinen kulma saadaan lausekkeesta: u v = u v cos(θ) ( ) ( ) u v θ = arccos = arccos u v 3 6 θ.85 05.8. b) Napakoordinaatiston piste (r, ϕ) karteesisissa koordinaateissa löytyy seuraavilla kaavoilla: x = r cos(ϕ) y = r sin(ϕ) Joten (, π/3) on karteesisissa koordinaateissa x = cos(π/3) = y = sin(π/3) = 6 6
ja (, π/6) on x = cos( π/6) = 3 y = sin( π/6) = Tehtävä 6 (L): Sievennä (cos(t) + i sin(t)) 8 muotoon, jota käyttäen voit ilmoittaa luvut cos(8t) ja sin(8t) lukujen cos(t) ja sin(t) avulla. Ratkaisu: Binomin neliökaavalla saadaan (cos(t) + i sin(t)) 8 = (cos (t) + i sin(t) cos(t) sin (t)), = ((cos (t) sin (t)) + i sin(t) cos(t)(cos (t) sin (t)) sin (t) cos (t)). Kun edellinen lauseke kerrotaan vielä kerran auki, saadaan lopulta (cos(t) + i sin(t)) 8 = cos(t) 8 8 cos(t) 6 sin(t) + 70 cos(t) sin(t) 8 cos(t) sin(t) 6 + sin(t) 8 + i ( 8 cos(t) 7 sin(t) 56 cos(t) 5 sin(t) 3 + 56 cos(t) 3 sin(t) 5 8 cos(t) sin(t) 7). Samaan tulokseen päästään käyttämällä binomikaavaa (a + b) n = n k=0 ( n k) a n k b k tai Pascalin kolmiota. Toisaalta de Moivren kaavan mukaan (cos(t) + i sin(t)) 8 = cos(8t) + i sin(8t), eli Saadaan siis Re ( (cos(t) + i sin(t)) 8) = cos(8t) Im ( (cos(t) + i sin(t)) 8) = sin(8t). cos(t) 8 8 cos(t) 6 sin(t) + 70 cos(t) sin(t) 8 cos(t) sin(t) 6 + sin(t) 8 = cos(8t) 8 cos(t) 7 sin(t) 56 cos(t) 5 sin(t) 3 + 56 cos(t) 3 sin(t) 5 8 cos(t) sin(t) 7 = sin(8t). Tehtävä 7 (P): Olkoot u = (,, ) ja v = (,, ). Laske ristitulo u v sekä vektoreiden u ja v määräämän kolmion pinta-ala. Ratkaisu: i j k u v = = i j + k = ( ( ) )i ( ( ))j + ( ( ))k = 3j + 3k 7
Ristitulovektorin pituus on yhtä suuri kuin vektorien u ja v määräämän suunnikkaan pinta-ala. Vektorien määräämän kolmion ala on puolet tämän suunnikkaan alasta, eli A = u v = 8 3 + 3 = Tehtävä 8 (P): Laske (3 + i)( + 3i) ja päättele tämän avulla, että Ratkaisu: arctan(/3) + arctan(3/) = π/. Merkitään x = 3 + i ja y = + 3i. Nyt arg(x) = arctan( 3) ja arg(y) = arctan( ). Taas 3 toisaalta xy = (3 + i)( + 3i) = 5i. Koska 5i sijaitsee positiivisella imaginaariakselilla, saadaan arg(xy) = π. Kompleksiluvuille x ja y pätee: arg(x)+arg(y) = arg(xy), joten arctan( 3)+ arctan( ) = π. 3 8