Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline...

31
Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat 1 2008 - 2012 Haapaniemi Jarno, Hiltunen Jyri, Joensuu Sini, Judin Lauri, Kiiskinen Juha, Kosola Heikki, Miilumäki Thumas, Nevala Essi, Nortunen Hari, Pietilä Juha, Pusa Joonas, Repo Iiris, Ristimäki Anssi, Sairanen Heikki, Savolainen Johanna, Talja Jussi, Tervaskangas Riikka, Toivo Jarkko, Turunen Sasu, Venho Janne ja Åkerblom Markku 1 Lukuvuosina 2008-2012 Tampereen normaalikoulun matematiikan opetusharjoittelijat ovat olleet rakentamassa joko Octave-opasta tai sen pohjalta nyt käsillä olevaa Scilab-opasta. Tavoitteena matematiikan oppiainekohtaisessa toiminnassa on ollut tehdä lukiokäyttöön hyvän ilmaisohjelman käyttöä tukeva suomenkielinen materiaali.

Transcript of Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline...

Page 1: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

ScilabMatematiikan apuväline

Huhtikuu 2012

Pohdin - projekti

ja

Opetusharjoittelijat1 2008 - 2012

Haapaniemi Jarno, Hiltunen Jyri, Joensuu Sini, Judin Lauri, Kiiskinen Juha, Kosola Heikki, Miilumäki Thumas, Nevala Essi,

Nortunen Hari, Pietilä Juha, Pusa Joonas, Repo Iiris, Ristimäki Anssi, Sairanen Heikki, Savolainen Johanna, Talja Jussi, Tervaskangas Riikka,

Toivo Jarkko, Turunen Sasu, Venho Janne ja Åkerblom Markku

1 Lukuvuosina 2008-2012 Tampereen normaalikoulun matematiikan opetusharjoittelijat ovat olleet rakentamassa joko Octave-opasta tai sen pohjalta nyt käsillä olevaa Scilab-opasta. Tavoitteena matematiikan oppiainekohtaisessa toiminnassa on ollut tehdä lukiokäyttöön hyvän ilmaisohjelman käyttöä tukeva suomenkielinen materiaali.

Page 2: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Sisällysluettelo 1. Yleistä ohjelmasta .................................................................................................................................. 3

2. Editorin käytöstä .................................................................................................................................... 4

3. Laskutoimitukset ...................................................................................................................................... 4

4. Funktion kuvaaja ...................................................................................................................................... 5

Yleisesti ................................................................................................................................................... 5

3D-kuvaajat ............................................................................................................................................. 5

Esimerkkejä ............................................................................................................................................. 5

5. Vektorit...................................................................................................................................................10

Yleisesti ..................................................................................................................................................10

Vektorin syöttö .......................................................................................................................................10

Vektorien laskutoimituksia ......................................................................................................................12

Tehtäviä ..................................................................................................................................................13

6. Matriisit ..................................................................................................................................................13

Matriisin määrittäminen .........................................................................................................................13

Matriisien yhteen-, vähennys- ja kertolasku ............................................................................................14

Matriisin transpoosi, determinantti ja käänteismatriisi............................................................................15

Lineaarisen yhtälöryhmän ratkaiseminen ................................................................................................15

Tehtäviä ..................................................................................................................................................17

7. Tilastotiede .............................................................................................................................................18

Yleisesti ..................................................................................................................................................18

8. Omat funktiot .........................................................................................................................................19

Yleisesti ..................................................................................................................................................19

Funktion rakenne ....................................................................................................................................20

for-lause .................................................................................................................................................23

if-lause ....................................................................................................................................................24

Tehtäviä ..................................................................................................................................................25

9. Numeerinen integrointi...........................................................................................................................26

Yleisesti ..................................................................................................................................................26

Esimerkkejä ............................................................................................................................................26

Tehtäviä ..................................................................................................................................................27

10. Scilab - harjoitustehtäviä .......................................................................................................................27

Page 3: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

1. Yleistä ohjelmastaGNU Octave on eräs ilmainen matematiikkaohjelmisto, joka soveltuu hyvin monenlaiseen käyttöön. Jatkuvasti kehittyvä ohjelmisto pystyy tarjoamaan työkaluja sekä perusmatematiikan että vaativamman matematiikan käsittelyyn. Octave on pitkälti kilpailevan kaupallisen MatLab -ohjelmiston kaltainen ja esimerkiksi käyttöliittymä ja komentokieli vastaavat pitkälti toisiaan. Verrattavuus esim. kaupalliseen matematiikkaohjelmistoon MatLabiin on erinomainen, mutta esim. Maple ja Mathematica poikkeavat monelta osin. Kun on pyritty luomaan yhä enemmän MatLabin kaltainen, ilmainen, lähdekoodiltaan avoin, vapaasti käytettävä ja edelleen jaettavissa oleva matematiikkaohjelma, on kehitetty vapaasti Internetistä ladattavissa oleva ohjelma Scilab.

Scilab on siis avoimen lähdekoodin matematiikkaohjelma eli se on vapaasti käytettävissä ja edelleen jaettavissa. Ohjelman voi ladata esimerkiksi sivustolta http://www.scilab.org ja siihen löytyy verkosta runsaasti opaskirjasia esim. http://www.bad.org.tr/mate/Belgeler/introscilab.pdf, joten tavallaan tämänkin kirjasen laadinta on ollut osin tarpeetonta. On kuitenkin huomattava, että tavoitteita tälle oppaalle on ollut kaksi: suomenkielinen ja lukiotasoinen. Syvällisenpään asioihin perehtymiseen tämä opas on riittämätön.

Scilabin avulla voi käyttää erityisesti vektorilaskennan ja matriisilaskennan apuvälineenä, mutta sillä voi suorittaa myös numeerista laskentaa, havainnollistaa asioita kuvaajilla sekä tehdä mm. omia funktioita ja funktio-opin tutkimuksia.

Scilab on komentorivipohjainen ohjelma. Komentoikkuna avautuu kun ohjelma käynnistetään. Komennot kirjoitetaan komentokehotteen "-->" perään ja ne päätetään painamalla enter-näppäintä. Tällöin komennon tulos tulostuu näytölle.

Samalle riville voi kirjoittaa useita komentoja erottamalla ne pilkulla. Jos komento ei mahdu yhdelle riville, sitä voidaan jatkaa seuraavalle riville kirjoittamalla "..." ja painamalla enteriä. Esimerkiksi:

-->s=1+2+3+4+5+6+8+9+10+... -->11+12+13+14+15+16+17+18+19+20 s = 203.

Scilabin käytöstä saa neuvoa help-toiminnolla. Help-toiminto käynnistyy painikkeella help tai komennolla help. Haluamastaan Scilabin komennosta saa tietoa komennolla help komento. Esimerkiksi komennolla

-->help cos

saadaan tietoa Scilabin komennosta cos. Komennosta voidaan etsiä tietoa myös help-ikkunaa käyttäen.

Page 4: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

2. Editorin käytöstäScilabissa on mahdollista kirjoittaa komennot myös editoriin. Editorin saa auki komennoilla edit ja editor tai vaihtoehtoisesti klikkaamalla komentoikkunan ylälaidassa olevaa ”Launch Scinotes”- kuvaketta. Editorilla kirjoitetut komennot voidaan ”ajaa” komentoikkunassa näppäinyhdistelmällä ctrl+L.

Editori on hyödyllinen siksi, että siinä on mahdollista muokata aiemmin kirjoitettuja komentoja. Virhettä korjatessa koko koodia ei siis tarvitse kirjoittaa uudelleen ja lausekkeita on mahdollista laskea uudelleen eri arvoilla.

Komennot editoriin kirjoitetaan samoin, kuin ne kirjoitettaisiin komentoikkunaan komentokehotteen perään. Puolipiste komennon perässä estää tulostuksen komentoikkunaan.

Esimerkki (tehtävän aihe liittyy lukion kurssiin MAA5)Lasketaan vektorien x=[1 2 3] ja y=[3 2 1] summa editoria hyväksi käyttäen.

3. LaskutoimituksetSkalaareilla laskeminen tapahtuu normaaliin tapaan. Laskentaoperaattorit ovat tutut +, -, *, ja /. Kertomerkki on aina laitettava. Potenssiin korotus merkitään joko ^ tai **, esim. 22 merkitään joko 2^2 tai 2**2. Laskujärjestys on normaali matematiikan laskujärjestys. Sitä voidaan muuttaa kaarisuluilla.

Scilabin numeeristen vakioiden nimet alkavat %-merkillä. Yleisimmät numeeriset vakiot ovat = %pi, Neperin luku e = %e, imaginaariyksikkö %i ja ääretön = %inf.

Page 5: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

4. Funktion kuvaaja

Yleisesti

Piirtäminen tapahtuu yleensä komennolla plot. Kirjoita help plot, kun tarvitset apua piirtämisessä. Kuvaajien ulkoasua, kuten väriä ja viivan paksuutta voi muuttaa. Kuvaan saa näkyviin selitykset (legendit), käyttämällä legend-komentoa. Tämän voi tehdä kirjoittamalla esimerkiksi

-->plot(x,x+2,'r',x,x+4,'--') -->legend('punainen','katkoviiva');

missä 'r' tarkoittaa, että kuvaaja halutaan esittää punaisena. Merkintä '--' piirtää katkoviivaa. Parametri x pitää tietenkin ensin määritellä. Komennoilla xlabel, ylabel ja title voidaan nimetä kuva ja akselit.

Ohjelma piirtää automaattisesti kuvaajat samaan ikkunaan. Komento clf() tyhjentää ikkunan. Jäljempänä muutama esimerkki funktioiden kuvaajien piirtämisestä Scilabilla.

3D-kuvaajat

Komennolla plot3d saadaan piirrettyä kolmiulotteisia käyriä. Kirjoita help plot3d, kun tarvitset apua kolmiulotteisten kuvaajien piirtämisessä. Yksinkertaisin muoto on

-->plot3d(x,y,z)

missä pisteet (x(i), y(i), z(i)) piirretään kolmiulotteiseen koordinaatistoon ja yhdistetään viivalla. Kuten kaksiulotteisessa tapauksessa, myös kolmiulotteisissa kuvaajissa voidaan nimetä akselit sekä kuva komennoilla xlabel, ylabel, zlabel ja title.

Jos halutaan piirtää kolmiulotteinen pinta, tämä onnistuu komennoilla surf ja mesh. Apua näiden komentojen käyttöön saadaan kirjoittamalla help surf ja help mesh. Usein pisteet x ja y on syytä esittää pisteruudukkona. Tämä onnistuu komennolla meshgrid. Pinnan tasa-arvokäyriä voidaan piirtää komennolla contour. Esimerkki 4 havainnollistaa 3D-pintojen piirtoa.

Esimerkkejä

Esimerkki (MAA9)Käsky linspace tekee vektorin. Sulkujen sisään merkitään järjestyksessä vektorin ensimmäinen arvo, vektorin viimeinen arvo, ja vektorin arvojen lukumäärä. Tässä tapauksessa siis (0, 3*%pi, 60). Tämä vektori kiinnitetään muuttujaksi x.

-->x=linspace(0,3*%pi,60);

Käsky tan( )y x laskee vektorimuuttujan jokaisen arvon tangentin ja tallentaa syntyvän vektorin

muuttujaksi y.

-->y=tan(x);

Piirretään tan(x):n kuvaaja.

-->plot(x,y)

Page 6: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Scilab toimii matriisilaskennan avulla. Tästä syystä muuttujat x ja y määritellään vektoreina, eli siis yksiulotteisina matriiseina. Komennolla plot(x, y) piirrämme pisteitä (xn, yn), joista kuvaaja muodostuu. Jos pisteitä on vähän, niin edellistä komentoa käytettäessä Scilab yhdistää pisteet viivalla toisiinsa.

Esimerkki (MAA9)

Määritellään x vektorina ja olkoon 2y x . Piirretään joitakin pisteitä.

-->x=[0,1.1,2.5,3.5]' x = 0. 1.1 2.5 3.5 -->y=x.^2 y = 0. 1.21 6.25 12.25 -->plot(x,y,'d')

Page 7: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Piirretään lisää pisteitä samaan kuvaan ja esitetään ne eri merkinnöin ('d' eli timantti, '+' eli risti ja '*' eli tähti). Tässä piirretään y vs. x, z vs. x ja w vs. x. Ensin määritellään z ja w.

-->w=sin(x); -->z=tan(x); -->plot(x,y,'d',x,z,'+',x,w,'*')

Pisteet sijaitsevat turhan lähellä ikkunan reunoja, joten piirretään kuvaaja uudelleen niin, että x- ja y-akseleita on enemmän näkyvissä. Tämä onnistuu komennolla replot([xmin,ymin,xmax,ymax]).

-->replot([-2,-4,4.5,16])

Page 8: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Scilab käyttää automaattisesti eri värejä, mutta myös niitä voi muokata haluamallaan tavalla.

Esimerkki (MAA9)1. Piirretään samaan kuvaan funktioiden cos3x , sin 4x ja 2tan x kuvaajat

(Graphic window number 0).

2. Piirretään funktion cos3 sin 4 2 tanx x x kuvaaja (Graphic window number 1).

Käsky figure kertoo Scilabille, että halutaan piirtää uuteen ikkunaan. Käskyä kannattaa käyttää aina ennen kuin piirtää uuden kuvan, koska silloin ei vahingossa piirretä toisen kuvan päälle.

-->x=linspace(0,3*%pi); -->a=cos(3*x); -->b=sin(4*x); -->c=2*tan(x); -->plot(x,a) -->plot(x,b) -->plot(x,c) -->figure; -->plot(x,a+b+c)

Esimerkki (MAA4)

Yhtälö 2 2z x y esittää pyörähdysparaboloidia. Piirretään paraboloidin pinta ja tasa-arvokäyrät.

Luodaan ensin parametrivektorit x ja y.

-->x = -1:0.01:1; -->y = -1:0.01:1;

Seuraavaksi luodaan pistematriisit X ja Y komennolla meshgrid:

-->[X, Y] = meshgrid(x, y);

Page 9: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Lasketaan matriisin Z arvot. Huomaa, että kun matriisien X ja Y alkioita korotetaan toiseen potenssiin, on käytettävä alkioittaista potenssiin korotusta, X.^2 ja Y.^2.

-->Z = X.^2 + Y.^2;

Piirretään pinta käyttämällä komentoa surf:

-->surf(X, Y, Z);

Komennoilla facecol ja edgecol saadaan muutettua pinnan väritystä.

-->clf(); -->surf(X, Y, Z, 'facecol','blue','edgecol','magenta');

Nimetään kuva ja akselit.

-->title('Paraboloid of revolution'); -->xlabel('x-akseli'); -->ylabel('y-akseli'); -->zlabel('z-akseli');

Saadaan seuraava kuvaaja:

Komennolla mesh(X, Y, Z) saataisiin myös piirrettyä kolmiulotteinen pinta. Piirretään vielä funktion 2 2z x y tasa-arvokäyrät. Ne ovat yhtälön 2 2x y c ratkaisukäyriä eri vakion c arvoilla. Tasa-

arvokäyrät ovat siis origokeskisiä ympyröitä, joiden sädettä c muutellaan. Nimetään kuva ja akselit.

-->contour(x, y, Z, 5); //Neljäs parametri kertoo käyrien lukumäärän. -->title('Contours x^2+y^2=c');

Page 10: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

-->xlabel('x-akseli'); -->ylabel('y-akseli');

Lopputuloksena saadaan seuraava kuvaaja:

5. Vektorit

YleisestiScilabilla voidaan käsitellä vektoreita ja suorittaa vektorilaskentaa moniulotteisissa avaruuksissa. Seuraavassa esitellään perustoiminnot, joilla pääsee hyvin alkuun vektorilaskennassa.

Vektorin syöttöVektorit syötetään hakasulkujen väliin seuraavasti:

Vaakavektori:

-->a=[1 2 3] a = 1. 2. 3.

tai vaihtoehtoisesti

-->b=[0,2,4] b = 0. 2. 4.

Page 11: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Pystyvektori:

-->c=[3 4 5]' c = 3. 4. 5.

tai vaihtoehtoisesti

-->c=[3,4,5]' c = 3. 4. 5.

tai vaihtoehtoisesti

-->d=[1;4;0] d = 1. 4. 0.

Vaakavektoreita voidaan myös luoda seuraavasti:

1) [a:b], missä vektorin alkiot muodostuvat kokonaisluvuista a, a+1, a+2,…,b

-->e=[1:5]

e =

1. 2. 3. 4. 5.

2) [a: :b], missä vektorin alkiot ovat a, a+ a, a+2 a, a+3 a,…, b

-->f=[1:0.5:5]

f =

1. 1.5 2. 2.5 3. 3.5 4. 4.5 5.

3) linspace(a,b) on vektori, joka koostuu 100:sta välillä [a,b] tasavälisesti olevista luvusta a, c2, c3,…,c99,b

4) linspace(a,b,n) on vektori, joka koostuu n:st välillä [a,b] tasavälisesti olevista luvusta a, c2, c3,…,

cn-1,b

Näistä vaakavektoreista voidaan tehdä pystyvektoreita merkin ” ’ ” avulla, kuten yllä on esitetty.

Page 12: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Vektorien laskutoimituksiaVektoreiden yhteen- ja vähennyslasku suoritetaan yksinkertaisella notaatiolla:

-->a+b ans =

1. 4. 7.

Vastaavasti vähennyslasku:

-->a-b ans = 1. 0. - 1.

Vektorin a pituus eli normi a :

-->norm(a) ans = 3.7416574

Vektorin a transpoosi Ta :

-->a' ans = 1. 2. 3.

Vektoreiden piste- eli skalaaritulo:

-->a*c ans = 26.

Huomaa, että pistetulo on tulo vaakavektorin ja pystyvektorin välillä. Jos molemmat vektorit ovat pystyvektoreita, pistetulo saadaan käyttämällä transpoosia:

-->c'*d ans = 19.

Ristituloa varten on muodostettava uusi funktio. Kolmiulotteisen avaruuden vektoreiden ristituloa varten muodostetaan funktio seuraavasti:

-->function y=cross(a,b) y=[a(2)*b(3)-a(3)*b(2);-(a(1)*b(3)-a(3)*b(1));a(1)*b(2)-a(2)*b(1)] endfunction

Page 13: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Nyt voidaan laskea kolmiulotteisten vektoreiden a ja b ristitulo a b :

-->cross(a,b) ans = 2. - 4. 2.

Edelleen vektorien a , b ja c skalaarikolmitulo a b c :

-->a*(cross(b,c)) ans = 0.

Huomaa, että vektorin a tulee olla vaakavektori.

Tehtäviä (MAA5)

1) Olkoon [1,0,1]a ,

124

b ja [2,3,6]c .

Laske Tb , a , a b , c a , b c ja a b c . 2) Määritä vektorien a ja b välisen kulman suuruus. Kosinin käänteisfunktion saa komennolla acos(x) 3) Ovatko vektorit a ja b yhdensuuntaisia, kun

a) [1,2,1]a ja [ 2, 4, 2]b b) [1, 2, 5]a ja [ 1.2, 2.4,6]b ?

6. MatriisitMatriisit ovat suorakulmaisia taulukoita ja ne ovat läheistä sukua vektoreille. Matriisien voidaan ajatella muodostuvan listasta vektoreita. Matriiseja käytetään kaksiulotteisen tiedon havainnollistamiseen sekä lineaarisen yhtälöryhmän käsittelyyn ja ratkaisemiseen.

Matriisit koostuvat riveistä ja sarakkeista siten, että kullakin rivillä ja kullakin sarakkeella on yhtä monta alkiota. Esimerkiksi lineaarisen yhtälöryhmän ratkaisemiseksi muodostetaan kerroinmatriisi, jonka alkiot saadaan yhtälöryhmän muuttujien kertoimista.

Matriisin määrittäminenScilabissa matriisin alkiot laitetaan hakasulkujen väliin vaakariveittäin. Rivien alkiot voidaan erottaa pilkulla tai välilyönnillä toisistaan ja rivit enterin painalluksella tai puolipisteellä. Seuraavaksi esitellään kolme

erilaista tapaa määritellä matriisi

0 1 02 3 15 3 2

A .

Page 14: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Tapa 1:

-->A=[0,1,0;2,3,1;5,3,2] A = 0. 1. 0. 2. 3. 1. 5. 3. 2.

Tapa 2:

-->A=[0 1 0;2 3 1; 5 3 2] A = 0. 1. 0. 2. 3. 1. 5. 3. 2.

Tapa 3:

-->A=[0 1 0 -->2 3 1 -->5 3 2] A = 0. 1. 0. 2. 3. 1. 5. 3. 2.

Matriisien yhteen-, vähennys- ja kertolaskuScilabissa voidaan suorittaa matriisien yhteen-, vähennys- ja kertolaskuja. Yhteen- ja vähennyslaskussa täytyy kuitenkin ottaa huomioon, että matriisien kertaluvut pitää olla samat. Matriisin kertaluvun saa selville komennolla size:

-->size(A) ans = 3. 3.

Matriisien yhteen- ja vähennyslasku suoritetaan käyttämällä merkkejä + ja -.

-->C=B+A C = 1. 3. 3. 6. 8. 7. 12. 11. 11. -->B=C-A B = 1. 2. 3. 4. 5. 6. 7. 8. 9.

Kertolaskussa kertojan sarakkeiden lukumäärä tulee olla sama kuin kerrottavan rivien lukumäärä. Kertolaskua merkitään symbolilla *.

Page 15: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

-->C=A*B C = 4. 5. 6. 21. 27. 33. 31. 41. 51.

Matriisin transpoosi, determinantti ja käänteismatriisi

Matriisille

0 1 02 3 15 3 2

A voidaan Scilabissa määrittää:

determinantti ( )det A ,

-->detA=det(A) detA = 1.

transpoosi TA , -->transA=A' transA = 0. 2. 5. 1. 3. 3. 0. 1. 2.

sekä käänteismatriisi 1A .

-->invA=inv(A) invA = 3. - 2. 1. 1. 0. 0. - 9. 5. - 2.

Lineaarisen yhtälöryhmän ratkaiseminenLineaarinen yhtälöryhmä voidaan määrittää matriisiyhtälönä Ax b , missä A kerroinmatriisi, xmuuttujavektori ja b vakiovektori.

Ratkaistaan lineaarinen yhtälöryhmä

3 2 42 5 2

2

x y zy z

z .

Tällöin kerroinmatriisiksi saadaan

1 3 20 2 50 0 1

A ja vakiovektoriksi

422

b . Mikäli kerroinmatriisi A

on kääntyvä, niin yhtälöryhmä voidaan ratkaista kertomalla matriisiyhtälö puolittain vasemmalta matriisin

A käänteismatriisilla 1A .

Page 16: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

-->"Määritetään kerroinmatriisi A:"; -->A=[1,3,-2;0,2,5;0,0,-1] A = 1. 3. - 2. 0. 2. 5. 0. 0. - 1. -->"Määritetään vakiovektori b:"; -->b=[4;2;-2] b = 4. 2. - 2. -->"Yhtälöryhmän ratkaisu saadaan kertomalla vektori b kerroinmatriisin A käänteismatriisilla vasemmalta. (Tämä ei kuitenkaan ole tehokkain laskentatapa)"; -->x=inv(A)*b x = 20. - 4. 2.

Yhtälöryhmän ratkaisu on

204

2

xx y

z .

Scilabissa sama asia voidaan kirjoittaa myös vaihtoehtoisesti ilman käänteismatriisikomentoa. (Tämä on laskennollisesti vähemmän raskas tapa ratkaista lineaarinen yhtälöryhmä)

-->x=A\b x = 20. - 4. 2.

Lineaarinen yhtälöryhmä voidaan ratkaista myös kokonaismatriisin avulla saattamalla se pelkistettyyn

riviporrasmuotoon. Tässä esimerkissä kokonaismatriisina olisi

1 3 2 40 2 5 20 0 1 2

B . Pelkistetty

riviporrasmuoto saadaan muodostettua Scilabissa komennolla rref.

-->B=[1,3,-2,4;0,2,5,2;0,0,-1,-2] B = 1. 3. - 2. 4. 0. 2. 5. 2. 0. 0. - 1. - 2. -->x=rref(B) x =

Page 17: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

1. 0. 0. 20. 0. 1. 0. - 4. 0. 0. 1. 2.

Tehtäviä (MAA4)

1) Määritä matriisi

0 1 02 3 15 3 2

A jotenkin muuten kuin ohjeessa näytetyillä tavoilla.

2) Matriisi

100826070

C . Määritä CT , C-1, det(C), C-CT, det(C)(C*C-1), C+CT–C-1.

3) Olkoon 1

102

M , 2

2 34 01 1

M ja 3

0 1 20 1 10 1 3

M . Laske

a) 2 3 1TM M M

b) 3 1 2 2( )T TM M M M

4) Ratkaise lineaarinen yhtälöryhmä

1925743032

321

321

321

xxxxxxxxx

.

5) Muodosta yhtälöryhmän

2 2 3 94 2 4

5 4 18

x yx y z

y z kerroinmatriisi ja kokonaismatriisi. Ratkaise yhtälöryhmä.

Page 18: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

7. Tilastotiede

YleisestiScilabilla voi suorittaa kaikki tavallisimmat tilastotieteelliset operaatiot. Tiedon oletetaan olevan matriisimuodossa. Operaatiot voidaan suorittaa käyttämällä joko riviä tai saraketta havaintoina ja vastaavasti saraketta tai riviä parametreina.

Jos haluat valita rivejä havainnoiksi, indikaattori on 'r' tai 1. Jos haluat valita sarakkeita havainnoiksi, indikaattori on 'c' tai 2. Jos indikaattoria ei ole valittu, operaatiota sovelletaan koko matriisiin alkio alkiolta.

Käytettävissä olevia tilastollisia funktioita ovat mm. sum(), mean(), stdev(), st_deviation(), median(), variance(), covar(), correl().

Komento Määritelmä Esimerkki

-->a=rand(A,B) Luo AxB-matriisin satunnaisilla luvuilla

-->a=rand(5,3) Luo satunnaisilla luvuilla täytetty 5x3 matriisin

--> B = [a , b , c ; d , e , f] Luo matriisin, johon pilkulla erotettuna tulevat rivien solut. Puolipiste vaihtaa riviä.

-->B = [1 , 2 , 3 ; 4 , 5 , 6] Luo matriisin

A =

1. 2. 3.

4. 5. 6.

-->s=sum(B, 'r') Antaa tulokseksi rivivektorin, jonka alkiot koostuvat matriisin B sarakkeiden summista.

-->s=sum(B, 'r')

s =

5. 7. 9.

-->m=mean(B, 1) Antaa tulokseksi rivivektorin, jonka alkiot koostuvat matriisin B sarakkeiden keskiarvoista.

-->m=mean(B, 1)

m =

2.5 3.5 4.5

-->sd=stdev(B, 1) Laskee matriisin B solujen arvojen keskihajonnan.

-->sd=stdev(B, 1)

sd =

2.1213203 2.1213203 2.1213203

-->mdn=median(B, 'r') Antaa tulokseksi rivivektorin, jonka alkiot koostuvat matriisin B sarakkeiden solujen arvojen mediaaneista.

-->mdn=median(B, 'r')

mdn =

2.5 3.5 4.5

Page 19: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

-->max(B, 'r') Antaa tulokseksi rivivektorin, jonka alkiot koostuvat matriisin B sarakkeiden maksimiarvoista.

-->max(B, 'r')

ans =

4. 5. 6.

-->min(B, 'r') Antaa tulokseksi rivivektorin, jonka alkiot koostuvat matriisin B sarakkeiden minimiarvoista.

-->min(B, 'r')

ans =

1. 2. 3.

-->correl(x, y, fre) Laskee muuttujien x ja y välisen korrelaation. fre on mxn-matriisi, jossa m = length(x) ja n = length(y). Matriisissa solujen (i, j) arvo vastaa joko parin (xi, yj) arvoa, lukumäärää tai frekvenssiä.

x=[2.5 7.5 12.5 17.5]

y=[0 1 2]

fre=[.03 .12 .07;.02 .13 .11;.01 .13 .14;.01 .09 .14]

rho=correl(x,h,fre)

rho =

0.2097870

Samat operaatiot voidaan suorittaa riveille vaihtamalla 'r':n tai 1:n tilalle 'c' tai 2.

Huom! min() ja max() operaatioiden yhteydessä tulee käyttää rivin tunnusta 'r' ja sarakkeen tunnusta 'c'.

8. Omat funktiot

YleisestiFunktio on ohjelma, jonka liittyminen ulkomaailmaan tapahtuu sisäänmeno- ja ulostuloparametrien kautta. Funktion muuttujat ovat funktion sisäisiä muuttujia, joten ne eivät sotkeudu komentoikkunan muuttujiin. Funktion voi tehdä komentoikkunaan tai erilliseen tiedostoon. Funktiota voidaan käyttää laajentamaan Scilabin ominaisuuksia.

Scilabin funktiot ja skriptit voidaan tehdä editorilla Scipad, joka käynnistetään valikkokomennolla Editor. Tehdyt komennot tai ohjelmat on tallennettava tiedostoon komennolla File: Save (Ctrl+s). Tiedoston tyyppi on oltava .sce tai .sci. Jos tiedosto sisältää vain funktiomäärittelyjä, valitaan tiedostotyypiksi yleensä .sci.

Tallennettu tiedosto ladataan Scilabiin:

• Scipadin valikkokomennolla Execute: Load into Scilab (Ctrl+l) tai • Scilabin valikkokomennolla File: Exec ….

Jos kyseessä on:

• skripti, niin se samalla ajetaan; • ohjelma, niin se latautuu Scilabiin. Se on ajettava omalla käskyllään.

Scipadiin voi tietenkin ladata aiemmin tehtyjä tiedostoja valikkokomennolla File: Open (Ctrl+o).

Page 20: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Yksinkertaisen funktion rakenne on seuraava:

function y = funktion_nimi(x) Komentoja y = funktion määräävä lauseke; endfunction

Edellisessä funktiossa on yksi sisäänmenoparametri x ja yksi ulostuloparametri y.

Yksinkertaisen funktion määrittelyssä voidaan käyttää myös komentoa deff seuraavasti:

deff(’y=funktion_nimi(x)’,’y=funktion määräävä lauseke)’)

Komennot päätetään joko Enterillä tai puolipisteellä (;) (tai molemmilla). Skriptissä puolipisteen käyttö estää tuloksen näkymisen näytöllä. Funktio ajetaan komentorivillä aivan samoin kuin muukin Scilabin komento: kirjoitetaan funktion nimi ja annetaan suluissa oleville kutsuparametreille arvot.

Funktion rakenneFunktio koostuu seuraavista osista:

1) Funktion esittelyrivi

Tämä on ohjelman ensimmäinen rivi, jolla esitellään funktion nimi ja määritellään

• sisäänmeno-parametrit • ulostulo-parametrit

Funktion esittelyrivi on muotoa

function out_param = funktion_nimi(in_param),

missä

• in_param sisältää funktion kutsuparametrit (sisäänmeno-parametrit). Ne kirjoitetaan pilkulla erotettuna. Jos kutsuparametreja ei ole kirjoitetaan pelkät sulut tai ei mitään. • out_param sisältää funktion ulostuloparametrit. Niitä voi olla

o ei yhtään: jätetään kokonaan pois tai kirjoitetaan [ ] o yksi: kirjoitetaan ulostuloparametrin nimi o useampi: kirjoitetaan ulostuloparametrien nimet pilkulla erotettuna hakasulkuihin.

Funktion esittelyrivejä voisi olla esimerkiksi function lissa(m,n) function A = heron(a,b,c) function [x,y,x] = sphe2car(rho,theta,phi)

Page 21: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

2) Help-teksti

Nämä ovat kommenttirivejä, jotka alkavat function-komentoa seuraavalta riviltä ja päättyvät tyhjään riviin tai komentoriviin. Kommenttirivit alkavat merkeillä //. Scilab näyttää help-tekstin help-ikkunassa, kun help-komento kohdistetaan funktioon:

• Ensimmäinen rivi tulostuu help-ikkunan vasempaan osaan. • Koko help-teksti tulostuu help-ikkunan oikean osan kohtaa Description.

Tähän paikkaan on hyvä kirjoittaa kuvaus

• funktion toiminnasta • sisäänmenoparametrit • ulostuloparametrit.

Tämän osan voi tietenkin jättää pois, mutta kommentointi on hyvän ohjelmointitavan mukaista.

3) Funktion runko

Tämä osa sisältää funktion varsinaisen ohjelmakoodin ja antaa arvon mahdollisille ulostulo-parametreille. Funktiota muodostettaessa on käytettävä taulukko-operaatioita .*, .^ ja ./, jos sisäänmenoparametri voi olla vektori tai matriisi.

4) Funktion lopetus

Funktion määrittelyn päättävä komento on endfunction.

5) Kommentit

Kommentit alkavat merkeillä // ja päättyvät rivin lopussa. Kommentteja voi sijoittaa minne tahansa ohjelmassa.

Funktion kutsun muoto

• funktion_nimi(in_param) palauttaa arvonaan mahdollisen ensimmäisen ulostuloparametrin • y = funktion_nimi(in_param) palauttaa muuttujassa y funktion ensimmäisen ulostuloparametrin. • [y1, y2, …, yp] = funktion_nimi(in_param) palauttaa muuttujissa y1, y2, …, yp funktion p enimmäistä ulostuloparametria.

Kun funktiota kutsutaan, niin kutsuparametreina olevien lausekkeiden arvot lasketaan ja näin saadut arvot asetetaan kutsuparametreiksi. Kuitenkin, jos kutsuparametrina on muuttujan nimi ja tämän muuttujan arvoa ei muuteta funktiossa, niin muuttujan arvoa ei kopioida.

Esimerkki (MAA3)Määritellään funktio heron(a,b,c), jolla on kolme parametria:

function A=heron(a,b,c) // Funktio laskee kolmion pinta-alan, // kun kolmion sivujen pituudet ovat a,b,c p=(a+b+c)/2 // Kolmion piirin puolikas A=sqrt(p*(p-a)*(p-b)*(p-c)) endfunction

Page 22: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Tehdään funktio Scipadillä ja ladataan Scilabiin.

Funktioita käytetään seuraavasti:

-->heron(3,4,5) ans = 6.

Esimerkki (MAA5)Tehdään funktio, jonka sisäänmenoparametrina on vektori ja ulostuloparametreina vektorin suurin ja pienin arvo.

Funktio:

function [ymin,ymax]=minmax(vect) ymin=min(vect) ymax=max(vect) endfunction

Funktion ajo:

-->v=rand(1,100); -->minmax(v) // Ensimmäinen ulostuloparametri ans = 0.0002211 -->[a,b]=minmax(v) // Molemmat ulostuloparametrit b = 0.9931210 a = 0.0002211

Funktion nimen on alettava kirjaimella. Funktio on hyvä tallentaa samannimiseen tiedostoon. Siis funktio f tallennetaan tiedostoon f.sci. Ohjelma voi tietenkin kutsua muita ohjelmia (ali-ohjelmia). Nämä voivat sijaita samassa tiedostossa kuin pääohjelma tai eri tiedostoissa. Ohjelmien järjestys tiedostoissa voi olla mikä tahansa. On vain huolehdittava siitä, että kaikki ohjelmat on ladattu Scilabiin.

Funktion muuttujista voidaan todeta seuraavaa:

• Muuttujan nimi alkaa kirjaimella. • Muuttujia ei tarvitse esitellä. • Sijoituskäsky luo muuttujan tai muuttaa muuttujan arvon.

Funktion muuttujat ovat lokaaleja eli funktion sisäisiä. Funktio voi myös käyttää, mutta ei muuttaa, komentoikkunan tai kutsuvan funktion muuttujan arvoa. Jos tällaisen muuttujan arvoa muutetaan, tehdään siitä paikallinen kopio.

Poikkeuksena ovat globaalit muuttujat. Globaali muuttuja on sellainen muuttuja, jonka arvo on käytettävissä ja muutettavissa kaikissa niissä funktioissa, joissa muuttuja on määritelty globaaliksi. Jos

Page 23: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

globaalia muuttujaa halutaan käyttää komentoikkunassa, on se sielläkin määriteltävä globaaliksi. Globaalit muuttujat suositellaan määriteltäväksi funktion alussa ennen niiden käyttöä.

Komennolla global x y z määritellään muuttujat x, y, z globaaleiksi.

Esimerkki (MAA3)Tarkastellaan komentoikkunan muuttujien arvon käyttöä funktiossa.

Tehdään funktio heronm, joka käyttää komentoikkunan muuttujia a, b, c. (Huomaa, että funktiossa ei ole kutsuparametreja.)

function A=heronm() // Funktio laskee kolmion pinta-alan, kun kolmion sivujen pituudet ovat a,b,c. // Muuttujille a, b, c annetaan arvot komentoikkunassa. p=(a+b+c)/2 // Kolmion piirin puolikas A=sqrt(p*(p-a)*(p-b)*(p-c)) endfunction

Ennen funktion kutsua on annettava arvot muuttujille ja ajetaan sen jälkeen funktio:

-->a=3; b=4; c=5; -->heronm() ans = 6. -->"Muutetaan a:n arvoa:"; -->a=5; -->heronm() ans = 9.1651514

for-lausefor-lauseessa toistetaan käskyjä ennalta määrätty määrä. for-lauseen perusmuoto on

for i = alku:askel:loppu lauseita end

Oletusarvona on askel =1. askel voi olla myös negatiivinen.

Lauseen toiminta on seuraava:

Silmukkamuuttuja i saa kaikki arvot arvosta alku arvoon loppu askeleella askel: alku, alku+askel, alku+2*askel, …, (loppu)1. Kullakin muuttujan i arvolla suoritetaan lauseet lauseita.

Page 24: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Esimerkki (MAA9)

Lasketaan summa 2 2

1

1 1 1 1 11 ...4 9 16

n

k k n .

function s=summa1(n) s=0; // Muuttujan alustus for k=1:n s=s+1/k^2; end endfunction

Ajetaan funktio:

-->summa1(100000) ans = 1.6449241

if-lauseif-lauseen muoto on seuraava:

if ehto 1 then lauseita 1 elseif ehto 2 then lauseita 2 … elseif ehto n then lauseita n else lauseita end

Lauseen toiminta on seuraava:

Jos ehto 1 on tosi, niin suoritetaan lauseita 1, muuten jos ehto 2 on tosi, niin suoritetaan lauseita 2 jne…, muuten suoritetaan lauseita. Rakenteesta voi puuttua elseif- ja else-osat.

Esimerkki (MAA2)

Tarkastellaan funktion 2

1, 1

( ) 1, 1 25, 2

x kun x

f x x kun xx kun x

esittämistä ja kuvaajan piirtämistä.

Määritellään funktio tiedostossa:

function y=fun(x) if x<=-1 then y=x+1 elseif x<=2 then y=x^2-1 else y=-x+5 end

Page 25: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

endfunction Lasketaan yksittäisiä arvoja:

-->fun(-3), fun(0), fun(3) ans = - 2. ans = - 1. ans = 2.

Jos halutaan piirtää tämän funktion kuvaaja, on käytettävä for-lausetta. Seuraavassa on piirretty funktion kuvaaja välillä [-3, 4]. Komennot kirjoitetaan riveittäin Scilabiin:

-->x=-3:0.01:4; -->y=[]; -->for t = x -->y = [y,fun(t)]; -->end -->plot2d(x,y)

Tehtäviä (MAA2)1) Tee ohjelma, joka kysyy käyttäjältä kappalemäärän ja yksikköhinnan. Ohjelma tulostaa tavaraerän

hinnan. Alennus määräytyy hinnan perusteella seuraavasti: a) jos hinta on yli 100 €, niin alennus on 2% b) jos hinta on yli 200 €, niin alennus on 5% c) jos hinta on yli 500 €, niin alennus on 10%

Page 26: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

2) Tee ohjelma, joka laskee ns. painoindeksin I .

Painoindeksi I määräytyy seuraavasti: 2

mIp , missä m on paino kiloina ja p on pituus metreinä.

Ohjelma on tulostettava painoindeksin arvo ja lisäksi seuraava kommentti:

jos 18I , "Alipaino"

jos 18 25I , "Normaalipaino"

jos 25 30I , "Lievä ylipaino"

jos 30 I , "Merkittävä ylipaino"

9. Numeerinen integrointi

YleisestiScilabilla voi helposti laskea funktioiden määrättyjä integraaleja. Tästä voi olla apua esimerkiksi tehtävien tarkistuksissa sekä pinta-alalaskuissa. Integrointiin on kaksi tapaa. On mahdollista joko ensin määritellä funktio joka integroidaan, ja sen jälkeen intg(a,b,fun)-komennolla integroida funktio määritellyllä välillä [a,b], tai käyttää komentoa integrate(’f(x)’,’x’,a,b). Komentoa integrate käytettäessä ei integroitavaa funktiota tarvitse erikseen määritellä etukäteen, vaan integroitava funktio annetaan komennon yhteydessä.

Esimerkkejä

Esimerkki (MAA10)Lasketaan funktion f(x) = sin x määrätty integraali välillä [0, ]. Tapa 1: Käytetään komentoa intg(a,b,fun), missä a ja b ilmoittavat integroitavan välin ja fun on funktion nimi. Tällä komennolla integroitaessa täytyy siis integroitava funktio ensin nimetä komennolla deff. Määritellään ensin funktio:

-->deff('y=f(x)','y=sin(x)')

Nyt siis integroitavan funktion nimi on f.

Integroidaan funktio intg-komentoa käyttämällä:

-->intg(0,%pi,f) ans = 2.

Tapa 2: Käytetään komentoa integrate(’f(x)’,’x’,a,b), missä f(x):n paikalle kirjoitetaan integroitava funktio, a ja b ilmoittavat integroitavan välin. Integroitavaa funktiota ei tarvitse erikseen määritellä ennen integrointia.

-->integrate('sin(x)','x',0,%pi) ans = 2.

Page 27: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

Esimerkki (MAA10)Lasketaan funktion g(x) = x2 määrätty integraali välillä [-1,2]. Käytetään tapaa 1, eli komentoa intg. Muistetaan määritellä funktio ensin! Nyt funktion nimi (fun) on g.

-->deff('y=g(x)','y=x^2') -->intg(-1,2,g) ans = 3.

Esimerkki (MAA10)Lasketaan funktion h(x) = (x + 1) 2 määrätty integraali välillä [-3,3]. Käytetään komentoa integrate, jolloin funktiota ei tarvitse määritellä etukäteen.

-->integrate('(x+1)^2','x',-3,3) ans = 24.

Tehtäviä (MAA10)Integroi funktio

a) 2( ) 2f x x x , välillä [0,2] ,

b) ( ) sin 2g x x , välillä 2

[0, ] ,

c) ( ) cos sin 2h x x x , välillä 2

[0, ] .

10. Scilab - harjoitustehtäviä

1. Määritä vektorin [1 2 -1 ] suuntainen yksikkövektori (MAA5)

-->x = [1 2 -1]; x/norm(x)

2. Ovatko vektorit a ja b kohtisuorassa toisiaan vastaan? (MAA5)

a) a=[0,3 4,7 0,5], b=[-2 e -8]

b) a=[ 2, 2, 2] , b=[6 7 -13]

-->a*b'

Page 28: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

3. a) Suunnistaja etenee vektorin suuntaisesti 150 m pisteestä O pisteeseen A, josta (MAA5)hän jatkaa 270 m vektorin 3 + 4 suunnassa pisteeseen B. Miten kaukana hän on tällöin

lähtöpisteestä O? (YO k1992/3b)

// a-kohta: Määritetään vektori OA

OA = [150 0];

// Määritetään suuntavektori ja tämän yksikkövektori vektorille AB

v = [3 4];

v0 = v/norm(v)

// Määritetään vektori AB yksikkövektorin v0 avulla

AB = 270*v0

// Määritetään vektori OB

OB = OA + AB

// Lasketaan vektorin OB pituus

OB_pituus = norm(OB)

b) Laske suunta, johon suunnistajan alun perin olisi pitänyt suunnata päästäkseen suorinta tietä perille.

// b-kohta: Lasketaan vektorien OA ja OB välistä kulmaa vastaava kosinin arvo

k = (OA*OB')/(norm(OA)*norm(OB));

// Lasketaan kulman suuruus radiaaneina ja muutetaan ne asteiksi

kulma_rad = acos(k);

kulma_deg = kulma_rad*(180/%pi)

4. Piirrä trigonometristen funktioiden kuvaajat välillä 0..2 . (MAA9)

-->x=0:0.01:2*%pi; y=sin(x);

-->plot(x,y)

5. Piirrä "puolikas tiimalasi" 2 2z x y . (MAA4)

-->x = -1:0.01:1; y=x;

-->[X,Y] = meshgrid(x,y); Z = sqrt(X.^2-Y.^2);

-->surf(X, Y, Z);

6. Tutki, missä funktio 3 2( ) 150f x x x on kasvava ja missä vähenevä. (MAA7)

Page 29: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

-->x=poly(0,'x') //määritellään nyt muuttujana käytettävän x:ää

-->z=derivat(-x^3+150*x^2)

-->n=roots(z)

-->horner(z,-1)

-->horner(z,1)

-->horner(z,200)

7. Integroi ( ) sin 2f x x välillä [0, 2 ] . (MAA10)

-->integrate('sin(2*x)','x',0,%pi/2)

8. Määritä paraabelin + 116 1683 ja x-akselin (MAA10) rajaaman alueen pinta-ala.

-->deff(’y = f(x)’,’y = -x^2 + 116*x - 1683’);

//päätellään kuvasta alkuarvaukset 0-kohdille (esim 0 & 100)

-->juuret = fsolve([0,100],f)

//valitaan integroimisrajoiksi saadut 0-kohdat

-->intg(juuret(1),juuret(2),f)

9. Ratkaise lineaarinen yhtälöryhmä 1925

743032

321

321

321

xxxxxxxxx

. (MAA4)

Page 30: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

-->A=[2,3,1,0; 3,-4,-1,7; -1,5,-2,-19];

-->x=rref(A)

10. Vuokraaja saa suorittaa vuotuisen vuokramaksunsa joko rahassa tai rukiissa ja (MAA4)maidossa näille sovitusta hinnasta. Suuriko vuokra on rahassa laskettuna ja mikä rukiille ja maidolle

sovittu hinta on, kun vuokraa yhtenä vuonna maksettiin 80 hl ruista, 300 l maitoa ja 320 mk, toisena vuotena 65 hl ruista, 200l maitoa ja 586 mk 25 p sekä kolmantena 85 hl ruista, 500 l maitoa ja 181 mk 25 p? (YO teht 1881/4)

-->A = [80 300 -1;65 200 -1;85 500 -1];

-->b = [-320;-586.25;-181.25];

-->x = A\b

-->//Pienen matriisin työstö luonnistuu myös tehottomimmin keinoin:

-->x = inv(A)*b

-->//tai:

-->B = [A b];

-->rref(B)

11. Mitkä vektoreista [0.20, -0.50, 1.70], [0.30, -1.40, -1.55] ja [0.50, - 1.25, 4.25] (MAA5)ovat yhdensuuntaisia?

-->a = [0.20, -0.50, 1.70];

-->b = [0.30, -1.40, -1.55];

-->c = [0.50, -1.25, 4.25];

-->acos(a*b'/(norm(a)*norm(b)))

ans =

2.0924264

-->acos(a*c'/(norm(a)*norm(c)))

Page 31: Scilab - people.uta.fipeople.uta.fi/~tnjuma/Scilab ohjeet.pdf · Scilab Matematiikan apuväline Huhtikuu 2012 Pohdin - projekti ja Opetusharjoittelijat1 2008 - 2012 Haapaniemi Jarno,

ans =

0.

-->acos(b*c'/(norm(b)*norm(c)))

ans =

2.0924264

12. Vektorit 4,3, 6a ja 1, 2,5b ovat suunnikkaan kaksi sivua. Mikä on suunnikkaan pinta-

ala? (MAA5)

-->norm(cross(a,b))

13. Olkoon piste ( 2,5)A ja (4,2)B . Määritä piste P , joka jakaa janan AB suhteessa 2:3.

-->P = B + 3/5*(A-B) (MAA4)

14. Mini Cooperin kiihdytystä mitattiin. Kuinka suuret G-voimat kuskiin keskimäärin kohdistui

kiihdytyksen ajan? Sovita mittausdataan suora lineaarista regressiota käyttäen.

t 0 1 2 3 4 5 6

v 0 18 36 50 65 83 90

-->t= 0:6

-->v = [0 18 36 50 65 83 90];

-->//sovitetaan suora, sovitetun suoran kulmakerroin ja vakiotermi talteen muuttujiksi k ja b

-->[k,b] = reglin(t,v)

-->//määritetään regressiosuora ja piirretään se

-->y = k*t + b;

-->plot (t,v,’o’, x,y)

-->//nopeussuoran kulmakerroin on kiihtyvyys(=derivaatta), verrataan maan putoamiskiihtyvyyteen

-->Gvoimat = k/9,81