mlteht/mlbasic, Matlab-perusteita

Samankaltaiset tiedostot
matlabteht/mlperusteet, Matlab-perusteita 1. mlp001.tex

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012

mlteht/mlbasic, Matlab-perusteita

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos Mat-1.C Matemaattiset ohjelmistot

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

mplperusteet 1. Tiedosto: mplp001.tex Ohjelmat: Maple, [Mathematica] Sievennä lauseke x 1 ( mplp002.tex (PA P1 s.2011)

Heikki Apiola, Juha Kuortti, Miika Oksman. 5. lokakuuta Matlabperusteita, osa 1

8. Yhtälöiden ratkaisuja Newtonilla, animaatioita

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Matemaattiset ohjelmistot A. Osa 2: MATLAB

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

BM20A0700, Matematiikka KoTiB2

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma

Valitse ruudun yläosassa oleva painike Download Scilab.

Matriisit ja vektorit Matriisin käsite Matriisialgebra. Olkoon A = , B = Laske A + B, , 1 3 3

FUNKTION KUVAAJAN PIIRTÄMINEN

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

1.1. Määritelmiä ja nimityksiä

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

Matriiseista. Emmi Koljonen

Ohjelman käynnistäminen

mlnonlinequ, Epälineaariset yhtälöt

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

1. Lineaarialgebraa A := Matriisin osia voidaan muutella päivittämällä riviä, saraketta tai osamatriisia (Matlabmaisesti): B :=

Insinöörimatematiikka D

Matlab- ja Maple- ohjelmointi

Muuttujan sisällön näet kirjoittamalla sen nimen ilman puolipistettä

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

Insinöörimatematiikka D

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

plot(f(x), x=-5..5, y= )

FUNKTION KUVAAJAN PIIRTÄMINEN

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Numeeriset menetelmät

Aalto-yliopiston perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos

Python-ohjelmointi Harjoitus 5

Mat-1.C Matemaattiset ohjelmistot

Insinöörimatematiikka D

1 Matriisit ja lineaariset yhtälöryhmät

Numeeriset menetelmät

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

Ratkaisuehdotukset LH 7 / vko 47

Lineaarialgebra ja matriisilaskenta I

Tyyppi metalli puu lasi työ I II III

MS-A010{3,4,5} (ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

Ratkaisut vuosien tehtäviin

Aalto-yliopiston perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos

Tekijä Pitkä matematiikka

Matematiikka B2 - Avoin yliopisto

Matematiikka B2 - TUDI

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

Johdatus tekoälyn taustalla olevaan matematiikkaan

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

9 Matriisit. 9.1 Matriisien laskutoimituksia

Matlabin perusteita Grafiikka

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47

Numeerinen analyysi Harjoitus 3 / Kevät 2017

Matemaattiset ohjelmistot MS-E1999

Harjoitus 10: Mathematica

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

MS-A0104 Differentiaali- ja integraalilaskenta 1 (ELEC2) MS-A0106 Differentiaali- ja integraalilaskenta 1 (ENG2)

Matematiikan tukikurssi, kurssikerta 3

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

Differentiaali- ja integraalilaskenta 1. Tietokoneharjoitus: ratkaisut

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

3.1 Lineaarikuvaukset. MS-A0004/A0006 Matriisilaskenta. 3.1 Lineaarikuvaukset. 3.1 Lineaarikuvaukset

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

MS-A010{2,3,4,5} (SCI, ELEC*, ENG*) Differentiaali- ja integraalilaskenta 1 Luento 2: Sarjat

Matemaattiset ohjelmistot 1-2 ov, 2-3 op

Matriisilaskenta Laskuharjoitus 5 - Ratkaisut / vko 41

mlgrafiikka 1. Piirrä samaan kuvaan funktioiden cos ja sin kuvaajat välillä [ 2π, 2π] Aloita tyyliin: 2. Piirrä

RATKAISUT a + b 2c = a + b 2 ab = ( a ) 2 2 ab + ( b ) 2 = ( a b ) 2 > 0, koska a b oletuksen perusteella. Väite on todistettu.

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 3 /

HY / Avoin yliopisto Lineaarialgebra ja matriisilaskenta II, kesä 2015 Harjoitus 1 Ratkaisut palautettava viimeistään maanantaina klo

Matriisien tulo. Matriisit ja lineaarinen yhtälöryhmä

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

IV. TASAINEN SUPPENEMINEN. f(x) = lim. jokaista ε > 0 ja x A kohti n ε,x N s.e. n n

2 Pistejoukko koordinaatistossa

Kertausosa. 5. Merkitään sädettä kirjaimella r. Kaaren pituus on tällöin r a) sin = 0, , c) tan = 0,

Matriisilaskenta (TFM) MS-A0001 Hakula/Vuojamo Ratkaisut, Viikko 47, 2017

MS-C1340 Lineaarialgebra ja

Talousmatematiikan perusteet: Luento 9. Matriisien peruskäsitteet Yksinkertaiset laskutoimitukset Transponointi Matriisitulo

BM20A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 4, Syksy 2016

Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa.

Insinöörimatematiikka D

Hannu Mäkiö. kertolasku * jakolasku / potenssiin korotus ^ Syöte Geogebran vastaus

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Transkriptio:

Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos mlteht/mlbasic, Matlab-perusteita Tässä luvussa on tehtäviä Matlab-perusharjoitteluun: Vektoreilla ja matriiseilla operointia, pisteittäiset ja matriisimaiset laskutoimitukset, vektoriajattelu, vektori- ja matriisifunktioita. Myös grafiikkaa, vaikka sille on varattu oma sektionsa. mlbas000 Matlab-pikaohje (a) Matlab-työ aloitetaan pienimuotoisilla kokeiluilla antamalla komentoikkunassa komentoja tyyliin >> v=1:10; (b) Skripti: Vakavampi Matlab-työ tehdään kirjoittamalla editorilla tiedostoon, esim. ajo.m. Tiedosto kannattaa rakentaa muotoon: %% Otsikko % %% Kappale 1 % Selitystä %... komento komento... %% Kappale 2 % komento komento... %% % Kappaleen 1 SUORITUS: CTR-ENTER % Kappaleen 2 SUORITUS: CTR-ENTER Julkaisu: publish (c) Komennon suorittama tulos tulee ruudulle ENTER-painalluksen jälkeen (kuvat erilliseen ikkunaan). Jos haluat estää tulostuksen, päätä komento puolipisteeseen. Jos myöhemmin haluat katsoa muuttujan sisällön, kirjoita sen nimi (ilman puolipistettä). Jos muuttuja on suuri matriisi, kannattaa ensin katsoa sen koko size(a) tai sen jotain osaa, esim. A(1:10,1:10). Tai klikkaa workspace -ikkunan muuttujaikonia. (d) Edellisen komennon tulos on muuttujassa ans. Yleensä on suositeltavaa antaa tulokselle oma nimi tyyliin nimi=...

(e) Nuoliylös-näppäimellä ( ) voi selata aikaisempia komentoja. Huomaa myös Command history. Käytä ahkerasti komentoja help, doc. (f) format long : Tulostetaan enemmän numeroita (n. 16). Laskutarkkuuteen tämä ei vaikuta. format rational laskee rationaaliluvuilla. format short: Paluu oletustulostukseen. (g) Matriisi saadaan aikaan tyyliin: A=[2 4 3;0 1-1;3 5 7]. Vektori saadaan näin: v=[1 2 3]. Pystyvektorissa käytetään erottimena puolipistettä (tietysti, vrt. matriisi A yllä). Matriisikertolaskun merkki on * (h) Matriisin A transpoosi: A (reaalisessa tapauksessa). (i) Kokonaislukuvektori: Esim 1:10 tai 1:2:20. Myös linspace. Pystyvektoriksi transponoimalla. (j) A(i,j) A:n alkio (i,j). A(2,:) A:n 2. rivi A(:,3) A:n 3. sarake A(1:4,1:4) osamatriisi Matriisin osaa voi päivittää, vaikkapa: A(1:4,1:4)=ones(4,4) tai A(2,:)=A(2,:)-2*A(:,1) (Gaussin rivioperaatio). (k) Matriisien liittäminen: Jos A:lla ja B:llä on yhtä monta riviä, ne voidaan liittää peräkkäin: [A b] (tai [A, b]). Jos yhtä monta saraketta, niin allekkain: [A;B] (l) Laskutoimitukset tarkoittavat matriisilaskua. Siis esim. A*B, A^p (jälkimmäinen mahdollinen vain neliömatriisille) (m) Vektorien ja matriisien (samankokoisten) pisteittäinen eli alkioittainen laskenta tapahtuu lisäämällä eteen piste. Esim: u=[1 2 3], v=[-2-2 -2], u.*v. Toinen operandi voi olla skalaari. Siten esim. vektorin u kaikki komponentit voidaan korottaa toiseen komennolla u.^2 (Ei siis tarvitse tehdä: u.^(2*ones(size(u))), joka tietysti toimii.) (n) Piirtämistä varten muodostetaan x-vektori, joka edustaa diskretoitua x-akselia ja lasketaan a.o. funktion arvo vektoriin y. Piirtoesim: x=linspace(-pi,pi); y=sin(x); plot(x,y) Huom! Matlab-funktioita voi yleensä soveltaa vektoriin ja tulokseksi saadaan funktion arvojen muodostama vektori. Laskutoimitukset +, operoivat vastinalkioittain ("pisteittäin"). Koska kerto- ja jakolasku sekä potenssiin korotus ^ on varattu matriisilaskutoimituksille, on "pisteittäin"operoitaessa lisättävä piste (.) ao. laskutoimitusmerkin eteen. (+, ) merkkien eteen ei saa lisätä, ne ovat jo valmiiksi pisteittäisiä.)

Jos haluamme muodostaa vaikkapa funktion x 2 arvot annetun x-vektorin pisteissä ja x- vektorina olkoon välin [-1,1] diskretointi 60:een osaan, voimme laskea ja piirtää näin: x=linspace(-1,1,60); y=x.^2; plot(x,y). Toinen tapa diskretoida on (:), esim: x=a:h:b; jossa siis annetaan askeleen pituus h (askelten lukumäärän sijasta). Kts. help plot, help :, help colon (o) Yhden rivin funktion määritys, funktiokahva >> f=@(x) x.*exp(x) % Määrittely >> f(-1:.1:1) % Käyttö >> g=@(x,y) x.^2 + y.^2 % Määrittely >> x=[.1.2.3]; y=1:3; g(x,y) % Käyttö (p) Lineaarisen yhtälösysteemin ratkaisu Yhtälösysteemi: A x = b >> A=rand(3,3); >> b=ones(3,1); >> x=a\b >> [A*x b] % Tarkistus (q) 3d-piirto: Pintojen ja korkeuskäyrien piirtämiseksi tarvitaan korkeusarvojen matriisi xytason pistehilan päällä. Se aikaansaadaan helpoimmin (ja rutiininomaisesti) meshgridkomennolla. Jos haluaisimme piirtää vaikkapa funktiopinnan f(x, y) = sin x cos y neliössä [ π, π] [ 2π, 2π], ja hilapisteitä olisi x-suunnassa 25 ja y-suunnassa 50 kpl., tehtäisiin näin: >> x=linspace(-pi,pi,25); >> y=linspace(-2*pi,2*pi,50); >> [X,Y]=meshgrid(x,y); >> Z=sin(X).*cos(Y); >> mesh(x,y,z) % Rautalankakuva >> surf(x,y,z) % Kaunis pintakuva (myos surfl, surfc, colorbar,...) >> contour(x,y,z) % Korkeusk. piirros Lue myös Lyhyen Matlab-oppaan kohdasta: http://math.aalto.fi/ apiola/matlab/opas/lyhyt/grafiikka.html#surf Tiedoston Latex-koodi:../mlteht/mlBasic/mlBas000.tex

Avainsanat: Matlab perusteet, harjoitus-pikaohje, harjoitusohje mlbas001 Olkoon z = [0-1 2 4-2 1 5 3], ja J = [5 2 1 6 3 8 4 7]. Mitä syntyy seuraavilla Matlab-komennoilla (sijoitetaan tilan säästämiseksi useita samalle riville.) x = z, A = x*x, s = x *x, w = x*j, length(x), length(z) size(a), size(x), size(z), size(s) Suorita doc length, doc size, tai etsi Matlabin Help index:n avulla (lisä)tietoa komennoista. -../mlteht/mlbasic/mlbas001.tex m-tiedosto Avainsanat:Matlabperusteet,mlBasic, vektoriperusteet,sisätulo,ulkotulo Matlabfunktioita: *, length,size mlbas002 Muodosta vektori, joka koostuu parillisista kokonaisluvuista välillä [21, 66]. -../mlteht/mlbasic/mlbas002.tex pdf-muodossa m-tiedosto Avainsanat:Matlabperusteet,mlBasic, vektoriperusteet Matlabfunktioita: help colon (:) mlbas003.tex Olkoon x=[2 5 1 6 7 4 3 2 1 11]. (a) Lisää jokaiseen alkioon luku 12 (b) Lisää 3 parittomien indeksien osoittamiin alkioihin.

(c) Laske vektorin alkioiden neliöjuuri. (d) Laske vektorin alkioiden neliöt ja neliösumma. Vihje: Helppo tapa vektorin v indeksivektorin muodostamiseen: ind = 1:length(v) Miten siis parittomat indeksit? Summaus sujuu helposti: help sum -../mlteht/mlbasic/mlbas003.tex../mlteht/mlbasic/ratkaisut/mlbas003r.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic, vektoriperusteet, indeksointi, vektorien muodostus,vektorioperaatio Matlabfunktioita: help colon (:),length,sqrt mlbas004 Olkoon x = [3 2 6 8 0-1] ja y=[4 1 3 5 0 0] (a) Lisää vektorin x alkioiden summa vektoriin y (b) Korota vektorin x alkiot vektorin y vastinalkioiden osoittamiin potensseihin. (c) Jaa y:n jokainen alkio vektorin x vastinalkiolla. (d) Kerro x:n jokainen alkio y:n vastaavalla alkiolla ja talleta tulos muuttujaan z Vihje: Tässä harjoitellaan aritmetiikkaa vektorilausekkeilla. Muista piste (.) laskuoperaation edessä (paitsi +, ). Summaukseen: help sum Lue: help NaN ja help inf. Huomaa: Matlab:lle 0 0 = 1 (eikä NaN)../mlteht/mlBasic/mlBas004.tex../mlteht/mlBasic/ratkaisut/mlBas004R.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic, vektoriperusteet, indeksointi, vektorien muodostus,vektorioperaatio Matlabfunktioita: help colon (:),length,sqrt

mlbas005 Muodosta vektori x, joka koostuu alkioista: (a) 2, 4, 6, 8,..., 20 (b) 10, 8, 6, 4, 2, 0, 2, 4,..., 10 (c) 1, 1/2, 1/3, 1/4, 1/5,..., 1/10 (d) 0, 1/2, 1/3, 1/4, 1/5,..., 1/10 Vihje: (c) ja (d): Muista pisteittäinen jakolasku: skalaari./vektori. Voit selkeyttää komentamalla: format rational Paluu oletusformaattiin: format../mlteht/mlbasic/mlbas005.tex../mlteht/mlbasic/ratkaisut/mlbas005r.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic, vektoriperusteet, indeksointi, vektorien muodostus,vektoriaritmetiik Matlabfunktioita: help colon (:), help format mlbas006 Määrittele vektorit x = [1 2 3 4 5] y = [0 2 4 6] z = [-4-2 0 2 4 ] Kokeile seuraavia laskutoimituksia/komentoja: x.*z x*z x*z % Miksi virhe? x.^2 % Mika vektori? x^2 % Miksi virhe? sqrt(x*x ) sqrt(sum(x.^2)) norm(x) % Miksi sama tulos kuin edella?

Vihje: (c) ja (d): Muista pisteittäinen jakolasku: skalaari./vektori. Voit selkeyttää komentamalla: format rational Paluu oletusformaattiin: format../mlteht/mlbasic/mlbas006.tex../mlteht/mlbasic/ratkaisut/mlbas006r.m (m-tiedosto)../mlteht/mlbasic/ratkaisut/mlbas006r.txt (m-tiedoston kopio.txt [että kaikki selaimet ymmärtää]) Avainsanat:Matlabperusteet,mlBasic, vektoriperusteet, indeksointi, vektorien muodostus,vektoriaritmetiik matriisitulo, vektorinormi Matlabfunktioita: sqrt, (.*), (*), norm mlbas007 Määrittele matriisit u = 3 4 5 6 v = 0 2 4 6 C = 1 2 3 1 3 6 1 4 9 A = 1 2 3 4 5 6 7 8 9 10 11 12 B = 3 4 5 6 2 1 0 1 5 4 2 0 1 2 1 1 Selvitä (ilman Matlabia), mitkä seuraavista laskutoimituksista on määritelty, ja kerro sanallisesti, mitä ne tekevät. Tarkista Matlab:lla. A*C C*A C^2 C.^2 A^2 A.^2 Vihje Tee skripti, jossa kukin laskutoimitus on omana %%-merkeillä erotettuna lohkonaan tyyliin: %% A*C % Lyhyt selitys %% C*A % Lyhyt selitys %%... Vie kursori kuhunkin lohkoon vuorollaan ja CTR-ENTER, ja seuraa Matlab-komentoikkunan tapahtumaa.

../mlteht/mlbasic/mlbas007.tex../mlteht/mlbasic/ratkaisut/mlbas007r.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic,taulukko-operaatiot, matriisitulo, vektorinormi Matlabfunktioita: (.*), (*) mlbas008 Tehtävän mlbas0081 lyhennetty versio. Määrittele matriisit 1 2 3 A = 1 3 6 1 4 9 Kokeile ja selitä: B = 1 2 3 4 5 6 7 8 9 10 11 12, A*B B*A A^2 A.^2 B^2 B.^2 Vihje Tee skripti, jossa kukin laskutoimitus on omana %%-merkeillä erotettuna lohkonaan tyyliin: %% A*C % Lyhyt selitys %% C*A % Lyhyt selitys %%... Vie kursori kuhunkin lohkoon vuorollaan ja CTR-ENTER, ja seuraa Matlab-komentoikkunan tapahtumaa.../mlteht/mlbasic/mlbas008.tex../mlteht/mlbasic/ratkaisut/mlbas008r.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic,taulukko-operaatiot, matriisitulo Matlabfunktioita: (.*), (*)

mlbas0081 Olkoot [ ] 10 3 A =, B = 4 2 [ 1 0 1 2 ], v = [ 1 2 ], w = Laske sekä käsin (ainakin nyt joku) että Matlabilla: [ 1 2 ] (a) v T w, (b) v w T, (c) A v, (d) A T v (e) AB BA, (f) Vektori x, jolle Ax = v Vihje Tee skripti, jossa kukin laskutoimitus on omana %%-merkeillä erotettuna lohkonaan tyyliin: %% Matriisien muodostus A =[..;..], B=... %% (a) %% (b)... %%... Vie kursori kuhunkin lohkoon vuorollaan ja CTR-ENTER, ja seuraa Matlab-komentoikkunan tapahtumaa.../mlteht/mlbasic/mlbas0081.tex (Tuskin tarpeen) Avainsanat:Matlabperusteet,mlBasic,taulukko-operaatiot, matriisitulo Matlabfunktioita: (.*), (*), Lineaarinen yhtälöryhmä (\) mlbas0082.tex (a) Määrittele 5 5-nollamatriisi A. (b) Muuta A:n 1. rivin alkot ykkösiksi.

(c) Muuta A:n 5. rivin alkiot viitosiksi. (d) Muuta A:n 5. sarake muotoon [1, 2, 3, 4, 5] T. Vaativuus: 0+../mlteht/mlBasic/mlBas0082.tex Avainsanat:Matlabperusteet,mlBasic, kaksoispiste (:), building matrices, updating rows and columns of a matrix Matlabfunktioita: kaksoispiste, colon(:), zeros mlbas009 (a) Avaa uusi m-tiedosto (skripti) vaikkapa alkulukuja.m. Kirjoita siihen komennot, joilla saat selville kaikkien korkeintaan N:n suuruisten alkulukujen lukumäärän ja summan. Laske lisäksi lukumäärän suhde kaikken lukujen N lukumäärään, ja myös sama summille. (b) Tee edellisen pohjalta funktio tiedostoon alkulukulasku.m : function [summa, lkm]=alkulukulasku(n)... summa =... ; lkm =...; end Vihje (a): Aloita tiedosto näin: %% Selita, mita skripti tekee ja vaikka oma nimi, pvm. ym. N = 100 alkuluvut=... lkm =... summa=......../mlteht/mlbasic/mlbas009.tex

../mlteht/mlbasic/ratkaisut/mlbas009r.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic,skripti, funktiotiedosto,m-tiedosto, alkuluvut, primes Matlabfunktioita: primes, sum mlbas010.tex (a) Miten kääntäisit vektorin v alkiot vastakkaiseen järjestykseen kaksoispisteen (:) avulla? (b) Entä matriisin A sarakkeet, vastaavasti rivit? (c) Miten limität ( merge ) kaksi samanpituista vektoria u ja v? Tarkoitus on siis muodostaa vektori w = [u 1, v 1, u 2, v 2,...] Vihje (a-b) Voit verrata Matlabfunktioin: fliplr, flipud "LeftRight, UpDown"(Mieti ensin itse!) (c) Liitä vektorit allekkain ja jonouta näin saatu 2-rivinen matriisi sarakkeittain (ovelaa). (Sarakkeittain jonoutus matriisille A saadaan näin: A(:).)../mlteht/mlBasic/mlBas010.tex../mlteht/mlBasic/ratkaisut/mlBas010R.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic,fliplr,flipud, kaksoispiste (:), kaanteinen jarjestys, matriisin jonoutus, merge, limitys Matlabfunktioita: fliplr,flipud, kaksoispiste, colon (:) mlbas011 Matriisin kokoaminen osista, lohkomatriisit, skriptit Tutustu helpin avulla funktioihin: eye, ones, zeros, diag, size. Aloita sitten hommat avaamalla uusi skripti-tiedosto, jonne kirjoitat kommentit ja komennot. Olkoot Y n k ja N n k ykkösistä ja vastaavasti nollista koostuvia n k-matriiseja ja olkoon I n n yksikkömatriisi. Muodosta seuraavat (lohko)-matriisit esim. arvoilla n = 4, k = 3. Rakenna skripti siten, että näitä on helppo muutella. A = [ In n Y n k N k n I k k ] [ ] Nn n I, B = n n I n n N n n

(a) Poimi A :n pää- ja sivulävistäjä. Neuvo: Jälkimmäisessä on hyötyä vaikkapa fliplrkomennosta. (b) Poimi B:n alalävistäjät, jotka alkavat 4:n askeleen päässä päälävistäjästä 1. vaaka- ja 2. pystysuunnassa. (Edelleen: help diag). Lopuksi voit käyttää publish-komentoa dokkarin aikaansaamiseksi.../mlteht/mlbasic/mlbas011.tex Avainsanat: Matlabperusteet,mlBasic,diag, fliplr,flipud,lohkomatriisit, skriptit Matlabfunktioita: diag, fliplr,flipud, kaksoispiste, colon (:) mlbas012.tex Taikaneliön saa komennolla magic(n). Muodosta muutamalla pienehköllä n:n arvolla matriisin M=magic(n) rivisummat, sarakesummat, lävistäjäsumma ja sivulävistäjäsumma. Taikaneliöillä on mielenkiintoinen historia. Ne tunnettiin Kiinassa 2000 vuotta e.a.a. http://www.mathworks.com/moler/intro.pdf Kts. Molerin kirjan introsta s. 18 alk. Myös Matlab:n dokumentaatiosta. -../mlteht/mlbasic/mlbas012.tex Avainsanat: Matlabperusteet,mlBasic,taikanelio, magic, rivisummat, sarakesummat,diag Matlabfunktioita: diag,magic ) mlbas013 Kun Newtonin menetelmää sovelletaan yhtälöön x 2 a = 0, saadaan iteraatiojono x 0 = a, x n+1 = 1 2 (x n + a x n ), joka suppenee kohti lukua a. Kirjoita MATLAB-skripti, jolla voit tarkastella tätä suppenemista, kun a = 5. Alkuarvona voit tässä tapauksessa käyttää vaikka lukua a. Anna tuloksena taulukko T, jossa on sarakkeet (vain numeeriset, ei otsikoita): n x(n) virhe 0 a a 1 1 x(1) a x(1). N. x(n). a x(n)

Vihje Suppenemisen tutkimisessa kannattaa käyttää for -luuppia. Se toimii syntaksilla for k = 1:N-1 x(k+1)=... virhe(k+1)=... end Oikean lopetusehdon muodostamiseen while-rakenne on parempi, mutta tämä nyt ensi harjoitteluun etenkin, kun suppeneminen on hyvin nopeaa. Vrt. teht. mlbas013a, jossa pyydetään while-ratkaisua. (a) Laske vain x-vektori for-luupissa ja muodosta taulukko T liittämällä 3 saraketta vierekkäin. (Yksinkertaisempi ja Matlabmaisempi tapa) (b) Rakenna taulukko T rivi riviltä suoraan for-silmukassa. (Tämäkin on opettavaista, hiukan joudut indeksishiftaukseen erityisesti, koska 0 on kielletty indeksi matriiseissa.) Jatkovihje (a)-tapauksessa kannattaa alustaa (pysty)vektori: x=zeros(n+1,1) (b)-tapauksessa kannattaa alustaa matriisi:t=zeros(n+1,3); Matlab ei alustusta vaadi, mutta isoilla datoilla alustaminen tehostaa huomattavasti, koska muuten tulkki joutuisi allokoimaan uutta muistitilaa joka kierroksella. Tulostustarkkuuden säätö: format long (ei vaikuta laskentatarkkuuteen). Huom: Indeksointi alkaa 1:stä Vaativuus 1+../mlteht/mlBasic/mlBas013.tex../mlteht/mlBasic/ratkaisut/mlBas013R.m (m-tiedosto)../mlteht/mlbasic/ratkaisut/mlbas013r.txt (m-tiedoston kopio.txt-tyyppisenä) Avainsanat:Matlabperusteet,mlBasic,iteraatio, iteration, for-loop, Newtonin menetelma neliojuuren laskentaan Matlabfunktioita: for, ones, sqrt

mlbas013a [Vrt. mlbas013, ota tarvittaessa ensin. ] Kun Newtonin menetelmää sovelletaan yhtälöön x 2 a = 0, saadaan iteraatiojono x 0 = a, x n+1 = 1 2 (x n + a x n ), joka suppenee kohti lukua a. Alkuarvona käytetään tässä siis lukua a. Kirjoita funktio newtsqrt, joka palauttaa Newtonin menetelmällä lasketun likiarvon syötteenä annetulle luvulle a. Käytä while-rakennetta ja lopetusehtoa, joka vertaa uutta iteraatiojonon arvoa edelliseen. (Ei siis vertailua Matlabilla laskettuun lukuun a, jota toki kannattaa käyttää tarkistukseen.) Vihje function x=newtsqrt(a) % Lasketaan neliöjuuri a Newtonin menetelmällä. % Lopetusehto: Peräkk. termien suhteellinen ero <= 10*eps. x=a; xuusi=...; % Hiukan epäelegantisti tehdään yksi erillinen iteraatio. % Elegantimpi tapa neuvottu alla: tol=10*eps; % Toleranssi hiukan (dekaadin) päälle kone-epsilonin while abs(xuusi-x) >=x*tol x=xuusi; xuusi=...; end; end x=-inf; xuusi=a; % Elegentti alustus, jolloin ei tarvita erillistä ekaa kierrosta. Ohjelmankehityksessä kannattaa sijoittaa aluksi kommentiksi otsikkorivi ja sopivat muut rivit ja ajaa kommentoimattomia komentoja skriptinä. Voit jakaa %%-merkeillä osa-alueisiin. (Tämä siltä varalta, ettet ensikirjoittamalla saisi funktiotasi virheettömäksi.) Toki debuggeri on myös käytössä, mutta skriptikehittely lienee useimmille mieluisampaa. Vaativuus 1+../mlteht/mlBasic/mlBas013a.tex../mlteht/mlBasic/ratkaisut/mlBas013aR.m (m-tiedosto)../mlteht/mlbasic/ratkaisut/newtsqrt.m (m-tiedosto, sama koodi kuin edellä, luonnollinen nimi ja sopivin help-tekstein täydennettynä)

Avainsanat:Matlabperusteet,mlBasic,iteraatio, iteration, while-rakenne, Newtonin menetelma neliojuuren laskentaan Matlabfunktioita: while, sqrt mlbas014 (Matlab), mplbas014 (Maple) Maple [Mathematica], Matlab (erityisesti b)-kohta). Tarkastellaan funktiota f(x) = 1 + sin(x) 1 + x 2. (a) Maple: Määrittele f lausekkeeksi, laske f:n arvo pisteessä x = 2.0 ja piirrä kuvaaja välillä [ 5, 5]. Matlab: Tee vastaava asia Matlabilla, kirjoita skripti. Huomaa, että Matlabissa täytyy ensin antaa x:lle numeerinen (vektori)arvo. (Tai käyttää symbolic toolboxia, jolloin komennetaan ensin: syms x.) (b) Tee samat asiat, mutta nyt määrittelemällä f funktioksi. Vihje a) Maple Matlab: > f:=1-... >> x=... > subs... >> f=... > plot >> plot b) Maple Matlab > f:=x->1-... >> f:=@(x) 1-...../mlteht/mlBasic/mlBas014.tex Ratkaisut:

Matlab:../mlteht/mlBasic/ratkaisut/mlBas014R.pdf pdf-muodossa../mlteht/mlbasic/ratkaisut/mlbas014r.m (m-tiedosto) Maple:../mplteht/mplBasic/ratkaisut/mplBas014R.pdf pdf-muodossa../mplteht/mplbasic/ratkaisut/mplbas014r.mw (mw-tiedosto) Avainsanat:Matlabperusteet,mlBasic,Mapleperusteet,mplBasic, lauseke, funktio Matlabfunktioita: (syms) Maplefunktioita: subs, eval mlbas016 Avaa Matlabin FILE-valikosta uusi m-tiedosto ja valitse skripti. Talleta nimelle cossinplot.m. Kirjoita tai kopioi tiedostoon täällä oleva teksti http://www.cs.cornell.edu/cv/books/scmv/mfiles/chap1.htm#sineplot Voit kopioda sen myös tästä: %% Script File: SinePlot % Displays increasingly smooth plots of sin(2*pi*x). close all % Suljetaan mahd. avatut grafiikkaikkunat. for n = [4 8 12 16 20 50 100 200 400] x = linspace(0,1,n); y = sin(2*pi*x); plot(x,y) title(sprintf( Plot of sin(2*pi*x) based upon n = %3.0f points.,n)) pause(1) end Suorita komennot copy/paste:lla istuntoon tai editorin vihreällä nuolella tai F5:llä tai CTR-ENTER tai kirjoittamalla Matlab-istuntoon tiedoston nimi: cossinplot Muuta pause-komento muotoon pause(), jolloin komentojono jää odottamaan ENTERpainallusta. Voit kirjoittaa ennen pause- komentoa kehoituksen tyyliin disp( Paina ENTER:iä jatkaaksesi ). Samalla voit editoida n-vektoria loppupäästä lyhyemmäksi. Näin pääset hallitummin katsomaan tilannetta. -../mlteht/mlbasic/mlbas016.tex

Avainsanat:Matlabperusteet,mlBasic,Skripti, komentotiedosto, kuva, piirto,plot Matlabfunktioita: plot, linspace Lähde: [CvL] C. van Loan: Introduction to Scientific computing with Matlab. mlbas017 Vahvista numeerisesti uskoasi matemaattiseen totuuten siitä, että summa p(n) = n k=0 suppenee kohti arvoa π kun n. ( 1 4 16 k 8k + 1 2 8k + 4 1 8k + 5 1 ) 8k + 6 (a) Suorita tehtävä vektoroidusti muodostamalla vektori k kaksoispiste (:) - operaattorilla. Muodosta pisteittäistä vektoriaritmetiikkaa käyttäen ensin termien jono: termivektori ja laske summa funktiolla sum. Muodosta myös kumulatiivinen summa, jolloin voit tarkkailla suppenemista, funktio on cumsum. Tee taulukko, jossa on indeksisarake ja osasummasarake. (b) Voit harjoitella myös epämatlabmaista skalaariohjelmointia ja for-luuppia (c) Ohjausrakenteiden harjoittelemiseksi voit tehdä saman myös while-rakenteella, joka sopii yleensä parhaiten iteratiivisiin algoritmeihin. Lopetusehto saadaan virhetoleranssista, eikä kokeilemalla, kuten for-silmukassa. Kirjoita skriptiksi, jossa voit vaihdella parametria n, tottakai! +../mlteht/mlbasic/mlbas017.tex../mlteht/mlbasic/ratkaisut/mlbas017rvekt.m../mlteht/mlbasic/ratkaisut/mlbas017rfor.m while-versio puuttuu, teepä itse! Avainsanat:Matlabperusteet,mlBasic, vektoriaritmetiikka, kaksoispiste (:), pisteittäinen, pointwise, sum, cumsum, for, while Matlabfunktioita: sum, cumsum, for, while, kaksoispiste, colon (:) mlbas018 Huom: Tehtävä on varsin tarkkaan neuvottu. Pituus ei merkitse vaikeutta. Tutkitaan heitetyn pallon lentorataa MATLABilla. Aloita luomalla m-tiedosto johon kirjoitat tarvittavat komennot.

1. Teemme seuraavat lähtöoletukset: i Pallon korkeus h heittohetkellä on 1.5m ii Putoamiskiihtyvyys g on 9.8m/s 2 iii Pallon vauhti v heittohetkellä on 4m/s iv Pallon etenemisvektorin suunta θ on 45 o Kirjoita oletukset skriptiisi. 2. Luo vektori t, jossa on 1000 tasaisin välein valittua arvoa väliltä [0, 1]. 3. Kuvataan muuttujalla x pallon etäisyyttä heittäjästä (mitattuna maan pinnalla) ja muuttujalla y pallon korkeutta, seuraavat yhtälöt kuvaavat muuttujien riippuvuutta ajasta ja oletetuista parametreista. (a) (b) x(t) = v cos ( θ π ) t.muunnetaan kulma radiaaneiksi 180 y(t) = h + v sin ( θ π ) t 1 180 2 gt2. Kirjoita annettujen yhtälöiden ja määrittelemiesi arvojen avulla vektorit x ja y. 4. Arvioidaan hetkeä jolloin pallo putoaa maahan, ja sen lentämää matkaa: etsi ensimmäinen indeksi, jolla pallon korkeus y muuttuu negatiiviseksi (käytä funktiota find). Pallon lentämä etäisyys on vektorin x arvo tässä indeksissä, lentoaika on vektorin t arvo tässä indeksissä. Tulosta sekä lentomatka että -aika näkyviin ruudulle. 5. Piirretään pallon lentorata: piirrä kuva, jossa pisteiden x-koordinaatit ovat vektorissa x, ja y-koordinaatit vektorissa y. Tämän jälkeen piirrä nolla-taso näkyviin katkoviivalla. Vihje +../mlteht/mlbasic/mlbas018.tex../mlteht/mlbasic/ratkaisut/html/mlbas018r.html../mlteht/mlbasic/ratkaisut/html/mlbas018r.pdf../mlteht/mlbasic/ratkaisut/mlbas018r.m

Avainsanat:Matlabperusteet,mlBasic,find Matlabfunktioita: find, linspace, plot mlbas019 Olkoon 0, x 0 g(x) = x, x > 0 Määrittele funktio g Matlab-funktioksi (m-tiedostoon). Vihje Voit käyttää funktioita zeros ja max. Ehkä vieläkin elegantimmin näin: Mieti, millä saat aikaan yksikköaskelfunktion (Heavisiden funktion), joka saa negatiivisilla arvon 0 ja positiivisilla 1. (Tähän riittää 3 merkkiä.) Sillä kerrot funktion y = x.../mlteht/mlbasic/mlbas019.tex../mlteht/mlbasic/ratkaisut/mlbas019r.html../mlteht/mlbasic/ratkaisut/mlbas019r.m (m-tiedosto) Avainsanat: Matlabperusteet,mlBasic, ramppifunktio, paloittain määrittely, zeros, max Matlabfunktioita: zeros, max mlbas020 (Maple ja Matlab) Määritä seuraavat summat: 1000 k=1 k ja Vihje Maple: Kokeile edelliseen sekä sum että add - komentoja, jälkimmäiseen vain sum. Matlab: Muodosta vektori 1,2,...1000 ja sitten vain sum. Jälkimmäisessä voit laskea muutamalla, toinen toistaan suuremmalla arvolla. (Numeerisesti et tietenkään voi summata äärettömyyksiin.)../mlteht/mlbasic/mlbas020.tex k=1 1 k 2. Avainsanat:Matlabperusteet,mlBasic, kaksoispiste (:), sum, cumsum Matlabfunktioita: sum, cumsum Maplefunktioita: sum, add

mlbas021 Esitä yhden rivin Matlab-komento, jolla saat selville vektorin tai matriisin niiden alkioiden lukumäärän, jotka ovat > 5. Testaa ainakin näille: a) A=1:10 b) B=[1 2 3;4 5 6;7 8 9] c) C=10*rand(6,6) d) D=ones(4,4)../mlteht/mlBasic/mlBas021.tex../mlteht/mlBasic/ratkaisut/html/mlBas021R.html../mlteht/mlBasic/ratkaisut/mlBas021R.m (m-tiedosto) Avainsanat:Matlabperusteet,mlBasic, > Matlabfunktioita: >, colon (:) 1. On esitetty, että jatkuva funktio f : [0, ) [0, ), joka toteuttaa ehdot 1. f(2x) = 2f(x), and 2. f(1) = c on aina muotoa f(x) = cx. Tälle on kuitenkin esitetty seuraava vastaesimerkki: f(x) = 2 n x 2 + 2 n+1, x [2 n, 2 n+1 ), n =..., 2, 1, 0, 1, 2,.... Kirjoita funktio f MATLABissa ja piirrä sen kuvaaja. Vihje: Tehtävän tarkoitus on opastaa MATLABin katto- ja lattiafunktioiden käytössä. Nämä ovat nimeltään floor ja ceil - katso tarkempia tietoja MATLABin helpistä. mlbas023.tex Piirrä funktiot x 4 ja 2 x samaan kuvaan ja selvitä, miten monessa pisteessä kuvaajat leikkaavat.../mlteht/mlbasic/mlbasbas.tex

Avainsanat, keywords: Matlab perusteet, Matlab basics mlbas024.tex Opettajalle: Voit tietysti ottaa sopivia osia tai keksiä lisää tilanteen mukaan. Kolmion ala voidaan lausua sivujen a, b, c avulla Heron n kaavalla: missä p = a+b+c 2 (piirin puolikas). osa A skripti A = (p a)(p b)(p c), Kirjoita skripti kolmio.m, joka päättelee ja laskee seuraavaa: 1. Päättelee annettujen kolmen luvun a, b, c perusteella, voidaanko muodostaa kolmio, jonka sivujen pituudet ovat nuo luvut. Jos voidaan, antaa luvun 1, muuten 0. 2. Laskee kolmion alan, kun sivujen pituudet annetaan, jos edellä saatiin 1. 3. Tulostaa tektin (a) tasakylkinen, (b) tasasivuinen, (c) suorakulmainen, tapauksen mukaan. 4. Piirtää kolmion, vaikkapa niin, että pisin sivu alkaa O:sta ja on x-akselilla. Voit ratkaista ympyröiden leikkauspisteet sopivalla ratkaisijalla tai piirtää ympyrät ja poimia leikkauspisteen kuvasta ginput:n avulla. osa B funktio Kirjoita funktio mikakolmio: function [onkokolmio,kolmiontyyppi,pinta_ala] = mikakolmio(a,b,c) % Laskee... % Esim: % [onko,tyyppi,ala] = mikakolmio(2,3,2) % % onko = % 1 % tyyppi = % taskylkinen % ala = % 1.9843... Sisällytä myös piirto. Vaativuus: 2../mlteht/mlBasic/mlBas040.tex

../mlteht/mlbasic/ratkaisut/mlbas040r.m Lisätietoa Hero:sta The formula is credited to Hero (or Heron) of Alexandria, who was a Greek Engineer and Mathematician in 10 70 AD. Poiminta viitteestä: https://www.mathsisfun.com/geometry/herons-formula.html Avainsanat, keywords: Matlab perusteet, Matlab basics, ohjelmointi, programming, kolmion pinta-ala, area of triangle, sort,if-then-else-elseif, functionfile, ginput mlbasyyy.tex Source: Matlab group in Facebook HIUKAN EPÄSELVÄ TEHTÄVÄ, vaatinee lisätietoa. UNCLEAR Given two lists of numbers: 1, 2, 3,..., 9 2, 3, 4, 8, 9, 10, 13, 14, 15. Sort the lists into 3 3 matrices A and B to (a) maximize and (b) to minimize det(a B) (Perhaps needs some more explanation (?)) Vaativuus: 2 (?)../mlteht/mllinalg/mlbas030.tex Avainsanat, keywords: Matlab perusteet, Matlab basics