MS-A0002 Matriisilaskenta Laskuharjoitus 1 / 2022 Mallit / Alkuviikko

Transcription

MS-A0002 Matriisilaskenta Laskuharjoitus 1 / 2022 Mallit / Alkuviikko
MS-A0002 Matriisilaskenta, III/2022
Turunen / Bergman
MS-A0002 Matriisilaskenta
Laskuharjoitus 1 / 2022
Mallit / Alkuviikko
Tehtävä 1 (L): Käynnistä Matlab-ohjelma ja kokeile laskea sillä muutama peruslaskutoimitus:
√
laske jokin yhteen-, vähennys-, kerto- ja jakolasku. Laske myös 214 , 3 sin(2π/3), e1/2 ja 7843.
Ratkaisu: Esimerkki yhteen- ja vähennyslaskusta, kertolaskusta ja jakolaskusta:
>> 1+3-1
ans = 3
>> 3*3
ans = 9
>> 3/2
ans = 1.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.
>> 2^14
ans = 16384
>> 3*sin(2*pi/3)
ans = 2.5981
>> exp(1/2)
ans = 1.6487
>> sqrt(7843)
ans = 88.5607
1
MS-A0002 Matriisilaskenta, III/2022
Turunen / Bergman
Tehtävä 2 (L): Kolmiulotteisen reaaliavaruuden R3 pisteitä merkitään usein antamalla koordinaatit kolmen alkion pituisena pystyvektorina. Matlab-ohjelmalla tämä tapahtuu syöttämällä esimerkiksi » v=[1; 2; 3]
a) Luo jotkin R3 :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?
c) Määritellään vektori u:
» u=[1+2*i 3+4*i]
Mitä eroa on vektoreilla u.’ ja u’ ?
Ratkaisu:
a)
>> v=[1; 2; 3];
>> u=[1; 1; 1];
>> u+v
ans =
2
3
4
>> v-u
ans =
0
1
2
>> 8*v-3*u
ans =
5
13
21
2
MS-A0002 Matriisilaskenta, III/2022
Turunen / Bergman
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’
ans =
1
2
3
2
4
6
3
6
9
>> v’*v
ans =
14
3x1- ja 1x3-matriisien kertolasku tuottaa 3x3-matriisin, 1x3- ja 3x1-matriisien kertominen taas
1x1-matriisin eli skalaarin. Vektorin kaikki alkiot voidaan korottaa toiseen potenssiin kolmella eri
tavalla:
>> v.*v
ans =
1
4
9
>> v.^2
ans =
1
4
9
3
MS-A0002 Matriisilaskenta, III/2022
Turunen / Bergman
>> power(v,2)
ans =
1
4
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.
c)
>> u=[1+2*i 3+4*i]
u =
1 + 2i
3 + 4i
>> u.’
ans =
1 + 2i
3 + 4i
>> u’
ans =
1 - 2i
3 - 4i
Ensimmäinen on tavanomainen matriisin (tai vektorin) transpoosi, jälkimmäisen ollessa ns. hermiittitranspoosi, jossa myös imaginääriosan merkki vaihdetaan. Monet reaaliarvoisen matriisitranspoosin ominaisuudet yleistyvät kompleksisille matriiseille, kun transpoosi vaihdetaan hermiittitranspoosiksi.
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:.1:pi;
>> y = sin(x);
>> plot(x,y)
4
MS-A0002 Matriisilaskenta, III/2022
Turunen / Bergman
Piirrä nyt funktioiden g(x) = x2 ja h(x) = x3 −x kuvaajat välillä [−2, 2], 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=-2:.1:2;
>> g=x.^2;
>> 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ä 4 (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.^2-2*Y.^2;
>> mesh(X,Y,Z)
luo xy-tason pisteverkon, laskee kussakin näistä pisteistä funktion f (x, y) = x2 −2y 2 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:
5
MS-A0002 Matriisilaskenta, III/2022
Turunen / Bergman
>> [X,Y] = meshgrid(-5:.15:5);
>> Z=X.^2- 2*Y.^2;
>> mesh(X,Y,Z)
Tämä tuottaa seuraavanlaisen kuvaajan:
6

Similar documents