Matriiseista Emmi Koljonen 3. lokakuuta 22
Usein meillä on monta systeemiä kuvaavaa muuttujaa ja voimme kirjoittaa niiden välille riippuvaisuuksia, esim. piirin silmukoihin voidaan soveltaa silmukkavirtayhtälöitä. Jos meillä on yhtälöryhmä 3x 1 + 5x 3 + 6x 4 = 2x 1 + 6x 2 + 6x 3 + 3x 4 = 5, (1) 5x 2 + 5x 4 = 7 x 1 + 4x 2 + 7x 4 = se voidaan täydentää muotoon 3x 1 + x 2 + 5x 3 + 6x 4 = 2x 1 + 6x 2 + 6x 3 + 3x 4 = 5 x 1 + 5x 2 + x 3 + 5x 4 = 7 1x 1 + 4x 2 + x 3 + 7x 4 =, (2) jossa siis on vain kirjattu kaikille muuttujille x i omat kertoimensa. Edellä oleva yhtälöryhmä voidaan kirjoittaa myös kahden vektorin yhtäsuuruutena, 3x 1 + x 2 + 5x 3 + 6x 4 2x 1 + 6x 2 + 6x 3 + 3x 4 x 1 + 5x 2 + x 3 + 5x 4 1x 1 + 4x 2 + x 3 + 7x 4 = 5 7, (3) sillä vektorit ovat samat vain, jos kaikki niiden vastinalkiot ovat samat. Kun yhtälön oikeaan puoleen
sovelletaan matriisitulon määritelmää 1, se voidaan edelleen kirjoittaa muotoon 3 5 6 x 1 2 6 6 3 x 2 5 5 x 3 = 5 7. (4) 1 4 7 x 4 Tällainen matriisimuoto on selvästikin tiiviimpi (vie vähemmän tilaa niin paperilla kuin tietokoneen muistissa), mutta vähintäänkin yhtä informatiivinen: yhdellä silmäyksellä näkee muuttujien kertoimet (ts. riippuvuudet toisistaan). Ensimmäinen, 4 4-taulukko on 4 4-matriisi. Sitä kutsutaan neliömatriisiksi, koska sen rivien ja sarakkeiden lukumäärä on sama, ts. muotona neliö. Toinen, 4 1- taulukko on vastaavasti 4 4-matriisi tai pystyvektori, jossa on neljä alkiota. 2 Yhtäsuuruusmerkin oikealla puolella on toinen pystyvektori. Muotoa (4) voidaan edelleen tiivistää nimeämällä osat symbolein, A = 3 5 6 2 6 6 3 5 5 1 4 7, x = x 1 x 2 x 3 x 4 5 2 7 9 1 6 5 1 3 5 1 5 + 6 + 5 1 1 2 + 6 1 + 5 3 1 7 + 6 3 + 5 8 1 9 + 6 5 + 5 = 2 9 2 5 + + 9 1 2 2 + 1 + 9 3 2 1 3 8 7 + 3 + 9 8 2 9 + 5 + 9 1 23 65 39 =. 19 31 86 18 Eräs tapa mieltää, mikä rivi kerrotaan milläkin sarakkeella on ajatella matriisit kulmikkain, toinen vasemmalle ja toinen alas ja laskettava alkio on aina vaakarivin ja pystysarakkeen leikkauskohdassa: 1 6 5 2 9 ja b = Edellä on käytetty kirjallisuudessa varsin yleistä tapaa, jossa matriisia merkitään isolla kirjaimella ja vektoreita bold-face -kirjasimella. Näillä merkinnöin saadaan aikaan matriisiyhtälö 5 7. Ax = b, (5) josta haluamme tietenkin ratkaista tuntemattoman termin, eli x-vektorin. 1 Matriisitulo eli kahden matriisin kertominen keskenään poikkeaa tutummista kertolaskuista (luvut ja vektorit). Matriiseja kerrottaessa täytyy muistaa muutama asia: i) Matriisien kokojen pitää täsmätä, niiden ei tarvitse olla samankokoisia vaan riittää, että tulon ensimmäisen tekijän sarakkeiden määrä on sama kuin toisen tekijän rivien määrä, ts. 2 3-matriisi voidaan kertoa 3 6 matriisilla (tuloksena on 2 6-matriisi) ii) Tulo ei ole vaihdannainen ts. AB BA. Kertomisjärjestyksellä on siis suuri merkitys. iii) Itse tulo saadaan aikaiseksi ajattelemalla ensimmäisen matriisin vaakarivit vaakavektoreiksi ja toisen matriisin pystyrivit pystyvektoreiksi ja tekemällä aina kunkin vaakarivin kanssa vektorien pistetulo jokaisen pystyrivin kanssa. Saatu alkio on siis summa, jossa kukin vaakarivin alkio kerrotaan vastaavalla pystyrivin alkiolla. Seuraava esimerkki selventänee tilannetta: 1 3 5 5 2 7 9 1 3 8 2 Matriiseja, joiden jompikumpi dimensio, rivien määrä tai sarakkeiden määrä, on yksi kutsutaan vaaka- tai pystyvektoriksi.
Periaatteessa yhtälö ratkaistaa samoilla periaatteilla kuin tavallinenkin yhtälö ax = b. Tarkastellaan yhtälöiden ratkaisua rinnakkain ax = b } a 1 {{ a } x = a 1 b =1 1x = b a x = b a Kerrotaan a 1 :lla, mikäli a. Ax = b A } 1 {{ A } x = A 1 b =I Ix = A 1 b x = A 1 b Kerrotaan A 1 :lla, mikäli A 1 on olemassa. Kerrotaan vasemmalta! Ix = x Edellä merkintä A 1 ei tarkoita 1 A :ta tai matriisia, jonka alkiot olisivat A:n alkioiden käänteislukuja. Osalla neliömatriiseista on olemassa toinen matriisi B (yksikäsitteinen), jolle on voimassa AB = I ja BA = I, siksi sitä voidaan kutsua A:n käänteismatriisiksi ja merkitä B = A 1. Edellä oleva symboli I tarkoittaa identiteettimatriisia, 1 1 I =... 1 koko sama kuin A:lla ja se vastaa ykköstä tavallisten lukujen kertolaskussa, eli IA = A tai AI = A. Eli käytännössä matriisisyhtälö (ts. yhtälöryhmä) ratkeaa, kun löydetään kerroinmatriisille A käänteismatriisi A 1 ja kerrotaan se yhtälön (4) oikealla puolella. Käänteismatriisia voi ratkaista useammallakin eri tavalla 3, mutta nyrkisääntönä on se että suuremmille kuin 3 3-matriiseille se on työlästä kynän ja paperin avulla laskien. Siksi käänteismatriisi lasketaan usein tietokoneen (laskimen) avulla. Eräs tehokkaimmista apuvälineistä matriisilaskentaan on ohjelmisto MATLAB, jonka käyttöön perehdytään tarkemmin seuraavassa kappaleessa. 1 Mikä on MATLAB? MATLAB on alunperin fortran-ohjelmointikielellä kirjoitettu matriisienkäsittelyohjelma, jonka tarkoituksena oli olla interaktiivinen ja helppo tapa käyttää LINPACK- ja EISPACK-projektien matriisialgoritmeja. Alkuperäinen MATLAB oli julkisohjelma, jota levitettiin yliopistoille. Nykyisin käytettävissä olevat versiot ovat The MathWorks Inc.:n toimittamia kaupallisia tuotteita, joihin on tehty lukuisia parannuksia alkuperäiseen MATLAB-ohjelmaan verrattuna. MATLABin hyviä puolia: Helppo interaktiivinen käyttö. Yksinkertainen syntaksi. Saatavana useimmille tietokoneille. Laaja joukko valmiita funktioita ja toolboxeja. 1.1 MATLAB Windows-ympäristössä MATLABin käyttöliittymä näyttää suunnilleen seuraavanlaiselta 3 Jätetään ne kuitenkin matematiikan laitoksen opetettavaksi
1.2 Yleistä MATLABin kehote on >>. Ulos pääsee komennolla exit tai quit. MATLAB-komennot on ryhmitelty tiettyihin ryhmiin; pelkkä help antaa luettelon näistä ryhmistä ja help ryhmän nimi listaa kaikki ryhmän komennot ja luonnollisesti help komento antaa lyhyen selostuksen halutusta komennosta. Aikaisempia syötteitä voi selata ja editoida nuolinäppäinten avulla. Myös Matlab Help Desk (kirjoita komentoriville helpdesk) antaa apua MATLABin käsittelyyn. 1.2.1 Sijoitus Sijoitusoperaattorina on =, siis komento x=1 antaa muuttujalle x arvon yksi. Puolipiste (;) estää tulostuksen. Useampia käskyjä voi kirjoittaa samalle riville puolipisteellä erotettuna (ei tulostusta) tai pilkulla erotettuna (tulostus). Arvon voi poistaa muistista komennolla clear, siis clear x 1.2.2 Vakiot MATLAB tuntee muun muassa vakiot pi (siis π ) ja i tai j (imaginaariyksikkö). Jos haluat nähdä enemmän π:n desimaaleja, anna komento format long. Tämän jälkeen kaikissa tulosteissa annetaan paljon desimaaleja, kunnes komennolla format short palautetaan alkuperäinen tilanne. Sisäiseen laskentaan tämä ei vaikuta. Vakiot realmax ja realmin antavat suurimman ja (itseisarvoltaan) pienimmän nollasta poikkeavan liukuluvun, jonka MATLAB pystyy esittämään. Muuttuja eps on liukulukulaskennassa käytettävä suhteellinen tarkkuus. Jos yrität jakaa nollalla, tulee tulokseksi Inf. Määrittelemätön tulos, vaikka / on NaN (Not a Number). 1.2.3 Muuttuja ans Muuttuja ans sisältää aina edellisen komennon tuloksen. Esimerkiksi jos suoritat pi^ 3 (siis potenssiinkorotus) ja haluat sitten jälkeenpäin sijoittaa tuloksen johonkin muuttujaan, niin se on onnistuu suorittamalla x=ans. Edellistä aikaisempiin tuloksiin ei tällä tavalla voi viitata.
1.2.4 Funktioita MATLAB tuntee mm. seuraavat alkeisfunktiot: abs, sign, sqrt, exp, log, log1, sin, cos, tan, asin, acos, atan, sinh, cosh, tanh. Huomaa, että MATLABille annetaan kulmat aina radiaaneina! 1.3 Matriisin määritteleminen MATLABissa on olennaisesti vain yksi tietoalkio n m-alkioinen numeerinen matriisi, jolla voi olla myös kompleksielementit. Erikoismerkitys voidaan tarvittaessa antaa 1 1-matriisille eli skalaarille (tavalliselle luvulle) tai matriisille, jolla on vain yksi rivi tai sarake eli vektorille. Matriisi voidaan määritellä usealla eri tavalla: Annetaan matriisin elementit listana Käytetään valmiita funktioita. Luodaan M-tiedostossa. Ladataan ulkoisesta tiedostosta. Helpoin tapa on suoraan antaa matriisin alkiot riveittäin käyttämällä hakasulkeita ja erottamalla rivit puolipisteellä, esimerkiksi a=[1 2 3;4 5 6;7 8 9] Suurissa matriiseissa voidaan syöttö katkaista usealle riville, jolloin rivinvaihto korvaa puolipisteen. a=[1 2 3 4 5 6 7 8 9 ] Matriisin alkiot voidaan erottaa toisistaan välilyönnillä tai pilkulla. Voimme käyttää myös mitä tahansa MATLAB-laskutoimituksia elementtien laskemiseksi, esimerkiksi x=[-1.3,4/5,4*atan(1)]