MattieT-tehtäväportaali

Menu:

Tehtäviä differentiaaliyhtälöiden ratkaisemiseen MATLABissa.

Käytön idea: kun löydät mieleisesi tehtävän, sen alapuolella on linkki tex-tiedostoon. Lataa tiedosto, ja liitä se harjoituspohjaan tai omaan Latex-pohjaasi.

Sisällysluettelo


  1. mlODE001

    mlD001.tex (iv3 harj.1 av 2001)
    Tätä tehtävää harjoitellaan Matlab-teknisesti loppuviikon harjoituksissa. Osattava esittää (ke 19.9.) liitutaululla käsin piirtäen periaatteessa.

    Tarkastellaan diffyhtälöä \(y'=y-x\) alueessa \(-1 \leq x,y \leq 1\),

    Piirrä \(xy\)-koordinaatistoon suuntakenttä ja isokliinejä käsin ja kokeile myös Matlabia laskimen roolissa. Ota hilaväliksi aluksi vaikka \(h=0.5\).

    Matlab-laskussa kannattaa muodostaa matriisi, sanokaamme K, jonka alkioina ovat arvot \(y_i - x_j\), \(i=1\ldots 5, j=1\ldots 5\) tähän tapaan:

      h=0.5; t=-1:h:1;x=0:h:2                                                                                  
      for i=1:5                                                                                                
        for j=1:5                                                                                              
          K(i,j)=y(i)-x(j)                                                                                     
        end                                                                                                    
      end                                                                                                      

    Koska matriisissa rivi-indeksi i juoksee alaspäin, on helpompaa sijoittaa arvot koordinaatistoon kääntämällä matriisin sarakkeet ylösalaisin; tämä tapahtuu komennolla flipud. Katso siis matriisista flipud(K) arvot ja merkitse ne kynällä piirrokseen. Tarkista käsin (tai “skalaarilaskimella” (Matlabkin käy)) muutama alkio ainakin. (Hilan tihentäminen käy nyt helposti muuttamalla vain yllä \(h\):ta.)
    Myöhemmin opimme, että K-matriisin muodostaminen käy kätevämmin, tehokkaammin ja rutiininomaisemmin näin:

    x=...;y=...  % Kuten edellä                                                                                
    [X,Y]=meshgrid(x,y);                                                                                       
    K=Y-X;    % Jos esiintyy kertolaskua, potenssia ym.,                                                       
              % on varustettava pisteellä, siis                                                                
              %     .*, .^  ./  (taulukko-operaatiot)                                                          

    Nyt meillä on kaikki data kerättynä suuntakentän piirtämistä varten. Voit katsoa skriptiä suuntak1.m alla aputiedostossa ja miettiä, mitä siinä tapahtuu. (myös: http://www.math.hut.fi/teaching/v/matlab/suuntak1.m)

    Lopuksi voit kokeilla LAODE-funktiota dfield8 (versio v. 2012) , jonka käyttö ei vaadi Matlabin tuntemista lainkaan. http://math.rice.edu/dfield/

    Vaativuus 2.

    Tehtävän Latex-koodi:
    ../matlabteht/mlODE/mlODE001.tex

    Avainsanat:MatlabODE, diffyhtalot, mlDifferentiaaliyhtälöt,suuntakenttä

    Viitteet: [LAODE] Golubitzky-Dellnitz: Linear Algebra and Differential Equations using Matlab, Brooks/Cole 1999.


  2. mlODE002

    mlODE002.tex [vastaava Maple: mplteht/mplODE003.tex] (iv3/2001, harj. 1)

    Millä xy-tason käyrillä on ominaisuus: Käyrän tangentin kulmakerroin jokaisessa pisteessä \((x,y)\) on \(-\frac{4 x}{y}\) ?

    Ratkaise yhtälö muuttujien erottelulla (“separation of variables”). Piirrä suuntakenttä isokliineja apuna käyttäen käsin vaikkapa alueessa \([-2,2] \times [-2,2]\).

    Kokeile myös LAODE-funktiota dfield8. Tässä on käytettävä ahkerasti stop-näppäintä, ratkaisu ajautuu aina ongelma-alueelle, mikäli x-akseli on mukana.

    Voit myös täydentää kuvaa alussa laskemillasi ratkaisukäyrillä tyyliin:

    x=linspace(-2,2,30);y=x; [X,Y]=meshgrid(x,y);                                                              
    Z=... % muista pisteitt\"aiset laskutoimitukset.                                                             
    contour(x,y,Z,1:10); shg                                                                                   

    Kokeile ja selitä!

    Hae m-tiedosto dfield8 sivulta http://math.rice.edu/~dfield/ ja sijoita se Matlab-polkusi varrelle.
    Kirjoita Matlab-istuntoon : dfield8

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlODE/mlODE002.tex

    Viitteet:

    [LAODE] Golubitzky-Dellnitz: Linear Algebra and Differential Equations using Matlab, Brooks/Cole 1999.

    Avainsanat: mlODE,Matlabdiffyht,differentiaaliyhtaloita Matlab:lla,suuntakenttä, isokliinit


  3. mlODE003

    mlD003.tex (iv3/2001, harj. 1, teht. 3) (Jatkoa: mlD007.tex)
    Lisääntymiskykyinen populaatio, jonka lisääntymistä rajoittavia tekijöitä ei ole, noudattaa yleensä likimain Malthus’n lakia, ts. nykyhetkellä kasvunopeus on verrannollinen populaation nykykokoon.

    Muodosta ilmiölle differentiaaliyhtälömalli ja ratkaise.

    Ratkaisussa esiintyy vakiot \(y_0\) = populaation koko alkuhetkellä ja \(k\) = "lisääntymiskykyvakio".

    Täydennämme vanhaa tuttua USA:n väkilukutaulukkoa arvoilla, jossa toinen rivi ilmaisee väkiluvun miljoonissa ja ensimmäinen vuosiluvun.

    1800    1830      1860     1890    1920    1950    1980
    5.3      13        31       63      106     150     230

    a) Määritä \(k\) kahden ensimmäisen datasarakkeen avulla. Tutki, mihin vuosilukuun saakka malli antaa siedettävän tuloksen ja mistä alkaen sietämättömän.

    b) Määritä \(k\) ensimmäisen ja viimeisen datasarakkkeen perusteella (jolloin kyseessä ei enää ole tulevaisuuden ennustaminen), ja tutki tämän mallin käyttäytymistä muissa datapisteissä.

    c) Havainnollista kuvilla, käytä tarpeen mukaan logaritmista skaalaa.

    Voit valita ajan \(0\)-hetken vuosiluvuksi \(1800\) (miksi?). Toki ei mitenkään välttämätöntä.

    Avainsanat:MatlabDy, diffyhtälöt, mlDifferentiaali(yhtälöt), populaationkasvumalli, Malthus’n laki

    Vastaavanlaisia tehtäviä: http://matriisi.ee.tut.fi/~piche/ode/ Pichet: TTY 1999, course 73107 (hyvä kokonaisuus):

    1) Perusesim tähän kohtaan: In 1980 the population of Altlantia was 254512; in 1995 it was 294726. What is its population in 2000. (Vuosilukuihin voisi lisätä nyt vaikka 15.)

    2) Jatkoa: mlD007.tex


  4. mlODE004

    mlODE004.tex [Maple-versio: ...mplODE004.tex] (iv3/2001, harj. 1, LV teht. 1-2)

    Laskuvarjohyppääjän yhtälö. Oletetaan, että hyppääjän + varustuksen massa = \(m\) ja ilmanvastus on verrannollinen nopeuden neliöön, olkoon verrannollisuskerroin \(=b\). Tällöin Newtonin 2. laki antaa liikeyhtälön:

    \[mv'=mg - b v^2 .\]

    Olkoon yksinkertaisuuden vuoksi \(m=1, b=1\) ja \(g=9.81 m/s^2\).

    Piirrä suuntakenttä.

    Oletetaan, että laskuvarjo aukeaa, kun \(v=10 m/s\), valitaan tämä alkuhetkeksi \(t=0\). Piirrä tämä ratkaisukäyrä suuntakenttäpiirrokseen. Yritä nähdä suuntakentästä, että kaikki ratkaisut näyttävät lähestyvän rajanopeutta \(v\approx 3.13\) ja että ratkaisut ovat joko kasvavia tai pieneneviä (ja millä alkuarvoilla mitäkin, ja mitä tarkoittaa fysikaalisesti)

    Määritä rajanopeus suoraan yhtälöstä.

    Käytä Matlab-piirroksiin funktiota dfield8 ja Maplessa DEtools-kirjaston DEplot-funktiota.

    Vihje Kts. [HAM] ss. 169-170 tai ?DEplot

    > with(DEtools)
    > with(plots)

    Suuntakenttään:DEplot,
    grafiikkojen yhdistämiseen: display.

    dfield-ohje:
    Hae m-tiedosto dfield8 sivulta http://math.rice.edu/\(\sim\)dfield/ ja sijoita se Matlab-polkusi varrelle.
    Kirjoita Matlab-istuntoon : dfield8

    Avainsanat: MatlabDy, MapleDy, diffyhtälöt, suuntakenttä, isokliinit, mplDifferentiaali(yhtälöt), mlDifferentiaali(yhtälöt)

    Viitteet: [HAM] Heikki Apiola: Symbolista ja numeerista matematiikkaa Maple-ohjelmalla, Otatieto 588, 1998


  5. mlODE005

    mlODE005.tex (Pichet Course 73107)
    Määritä diffyhtälön \[x'=x^2-t\, x + 4t\] suuntakenttä ja pisteen \((x,t)=(-1,-1)\) kautta kulkeva ratkaisukäyrä graafisesti funktion dfieldxx avulla, missä \(xx=8\) (v. 2012).
    Mikä on tämän funktion minimipisten likiarvo (vaikka 2:n tai 3:n numeron tarkkuudella).

    Vihje:
    Hae m-tiedosto dfield8 sivulta http://math.rice.edu/\(\sim\)dfield/ ja sijoita se Matlab-polkusi varrelle.
    Kirjoita Matlab-istuntoon : dfield8
    Kun sinulla on yhtälö, suuntakenttä ja ratkaisukäyrä, voit valita Edit/Zoom in, jolla pääset tarkentamaan minipisteen hakua (askeleen kerrallaan).
    Ennen minimin hakua kannattaa poistaa piirtämäsi ratkaisukäyrät Options/Erase solutions, niin Options/Keyboard input-valinnalla voit antaa tarkan alkuarvon.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlODE/mlODE005.tex

    Avainsanat: mlODE,Matlabdiffyht,differentiaaliyhtaloita Matlab:lla,suuntakenttä, dfield8

    Matlabfunktioita: ode45,dfield8(Rice University)


  6. mlODE006

    mlD006.tex
    Kun Marsiin laskeutuvan luotain laukaisee laskeutumisrakettinsa, sen nopeutta kuvaa differentiaaliyhtälö \[\frac{dV}{dt} = g_m - \frac{k}{m}V^2,\] missä \(g_m = 3.688\) on Marsin painovoimakerroin, \(k= 1.2\) on aerodynaaminen vastusvoima, ja \(m=150\) on luotaimen massa kilogrammoissa. Käytä vapaan pudotuksen rajanopeutta alkuarvona (Marsissa rajanopeus on 67.056 m/s), ja ratkaise yhtälö välillä \([0:0.05:6]\). Piirrä sekä nopeuden että kiihtyvyyden kuvaajat.


  7. mlODE007

    mplODE017.tex, mlODE007.tex

    Käyrän sovituksen yhteydessä huomasimme, että eksponentiaalinen kasvumalli, ns. Malthus’n laki \(y'=k y\) ei toimi USA:n väestödataan pitkällä aikavälillä. Mallia voidaan tarkentaa lisäämällä sopiva kasvua rajoittava termi, tällöin johdutaan ns. logistiseen kasvulakiin:

    \(y'=a y - b y^2\)

    USA:n väestödataan liityen Verhulst arvioi v. \(1845\) arvot \(a=0.03\) ja \(b=1.6 10^{-4}\), kun \(t\) mitataan vuosissa ja väkiluku \(y(t)\) miljoonissa.

    Opettajalle: Tehtävä voidaan käsitellä ehkä luontevamminkin kokonaan erillisenä numeeristen diffyhtälöratkaisujen opetuksesta. Tällöin otetaan vain alla olevat kohdat (c) ja/tai (d).

    (a) Ratkaise tehtävä (\(y(0)=5.3\)) Eulerin menetelmällä käyttämällä askelpituussa \(h=10\)

    (b) rk4:llä käyttäen n. nelinkertaista askelta (voit kokeilla pienempiäkin)

    (c) Matlabin ode45:llä.

    (d) Laske analyyttinen ratkaisu Maplella. (Kyseessähän on Bernoullin yhtälö.)

    Piirrä kuvia ja laske kaikissa tapauksessa ratkaisujen arvot annetuissa taulukkopisteissä. (ode45-tapauksessa onnistuu ainakin sovittamalla dataan splini funktiolla spline, joka on maailman helppokäyttöisin.)
    kts. http://www.math.hut.fi/teaching/v/matlab/opas.html#splinit
    (Nykyään (2012) ei tarvita erillistä splinisovitusta, laskentapisteet voidaan antaa suoraan ode45-funktiolle syötteenä.)

    function [T,Y]=eulerS(f,Tspan,ya,n)
    % Tämä vain kehittely- ja opettelutarkoituksessa. 
    % Funktio eulerV hoitaa niin skalaari- kuin vektoriversion.
    %  (24.2.04, modifioitu 21.8.2010)
    % Esim: y'=t+y, y(0)=1
    %       f=@(t,y)t+y
    %       [T,Y]=eulerS(f,[0 4],1,6), plot(T,Y,T,Y,'.r');shg  
    a=Tspan(1);b=Tspan(2);
    h=(b-a)/n;
    Y=zeros(n+1,1);T=(a:h:b)'; %Pystyvektorit yhdenmukaisesti ode45:n
    Y(1)=ya;                   %  kanssa 
    for j=1:n
       Y(j+1)=Y(j)+h*f(T(j),Y(j));
    end;

    Vaativuus: 2+
    Tehtävän Latex-koodi:
    ../mplteht/mplODE/mplODE017.tex

    Ratkaisu: *** Hukassa, etsi/tee ***
    Viitteitä:

    http://math.aalto.fi/opetus/kp3-ii/06/L/L14dynumkalvot.pdf
    http://www.math.hut.fi/ apiola/matlab/opas/lyhyt/esim/eulerS.m
    (Listaus yllä)

    Avainsanat: mplODE,Maplediffyht,differentiaaliyhtaloita Maplella, logistinen kasvu, numeeriset menetelmät, Eulerin menetelmä, Heunin menetelmä, Runge Kutta

    Maplefunktioita: dsolve


  8. mlODE008

    mlD008.tex,mplD018.tex
    Tarkastellaan yhtälöä \(y'=-2\alpha(t-1)y\). Ratkaise aluksi analyyttisesti (saat käyttää Mapleakin.)

    Totea kuvasta ja derivaattaehdosta yhtälön stabiilisuus/epästabiilisuusalueet. Ota kuvassa ja aina tarvittaessa vaikkapa \(\alpha =5\).
    Ratkaise yhtälö sekä Eulerilla että BE:llä. Sopivia arvoja voisivat olla vaikkapa \(h=0.2\), väli: \([1,4.5]\), \(y(1)=1\).
    Vertaa kokeellisesti stabiilisuukäyttäytymistä teorian ennustamaan ja pane merkille, miten epästabiilisuus käytännössä ilmenee.
    Tämä tehtävä soveltuu erityisen hyvin Maplella tehtäväksi, se on pitkälle ideoitu [HAM] sivulla 124, myös Euler ja BE ovat valmiina. (Koodit saa kurssin maple-hakemistosta.) ** Tulee aputiedostoon **

    ** apu puuttuu, editoi viitteet! **

    Viitteitä:

    http://math.aalto.fi/opetus/kp3-ii/06/L/L14dynumkalvot.pdf
    http://www.math.hut.fi/~apiola/matlab/opas/lyhyt/esim/eulerS.m
    (Listaus yllä)


  9. mlODE016

    Maple,Matlab (H2T10)

    • Ratkaise alkuarvotehtävä \[y' -y = \cos x,\ \ y(0)=1\]

      analyyttisesti Maplella ja numeerisesti Matlabilla. Piirrä ratkaisukäyrä.

    • Anna alkuarvoksi symboli \(c\) ja piirrä ratkaisukäyräparvi sopivalla välillä, kun \(c=-0.9,-0.8,\ldots ,0.\)

      Miltä parvi näyttää suurilla \(x:\)n arvoilla. Tässä pitäisi erottua kolmenlaista käytöstä.

    Maple: dsolve, Matlab: ode45

    Avainsanat: Differentiaaliyhtälö, alkuarvotehtävä, analyyttinen ratkaisu, numeerinen ratkaisu.


  10. mlODE017

    mplD007.tex (iv3/2001, harj. 2, AV teht. 1)
    Ratkaise (AA)-tehtävä \(y' - 2 x y = 1,\ \ y(0)=-0.5\)

    Tässä näyttää siltä, että (EHY):n erikoinen olisi helppo löytää, mutta huomaat pian, että luonnolliset yritteet eivät toimi. (Kyseessähän on lineaarinen, mutta ei-vakiokertoiminen yhtälö.)

    Ratkaise vaan sitten kiltisti integroivan tekijän menettelyllä.

    Integrointi johtaa erf-funktioon, Maple antaa sen suoraan, voit myös konsultoida KRE-kirjaa hakusanalla erf. Lausu siis ratkaisu erf:n avulla.

    Piirrä suuntakenttäpiirros Maplen DEtools-pakkauksen DEplot-funktion avulla (kts [HAM] s. 169), voit toki käyttää myös Matlab:n dfield8-funktiota (ohje alla).

    Valitse alkuarvoja \(y_0\) väliltä \((-1,-0.5)\) yrittäen löytää kriittistä arvoa \(y_0\), joka jakaa ratrkaisukäyrät plus tai miinus ääretöntä lähestyviin. (Tuo kriittinen ratkaisukäyrä on rajoitettu.) Käytä hyväksesi erf-funktion ominaisuutta \(\lim_{x\to \infty} erf(x) = 1\) laskeaksesi tarkan arvon \(y_0\):lle.

    dfield-ohje: Hae m-tiedosto dfield8 sivulta http://math.rice.edu/~dfield/ ja sijoita se Matlab-polkusi varrelle.
    Kirjoita Matlab-istuntoon : dfield8

    Avainsanat: MapleDy, diffyhtälöt,erf, mplDifferentiaali(yhtälöt)

    Viitteet: [KRE] E. Kreyszig: Advanced Engineering Mathematics, Wiley
    [HAM] Heikki Apiola: Symbolista ja numeerista matematiikkaa Maple-ohjelmalla, Otatieto 588, 1998.


  11. mlODE020
    • Piirrä tasokäyrä \((x,y)=(e^{-t/20}\cos\, t, e^{-t/10 \sin\, t})\) (faasitaso).

    • Piirrä edelliset koordinaattikäyrät \(x(t)\) ja \(y(t)\) (aikataso).

    Muista (.*), kun muodostat vektorilausekkeita. kokeile eri parametrivälejä. Kokeile linspace(a,b,n):ssä muitakin kuin oletusarvoa \(n=100.\) Käytä axis-komentoa. Ja kysele help:llä.
    Uusi grafiikkaikkuna: >> figure, Useampia samaan kuvaan: >> hold on

    Avainsanat: Differentiaaliyhtälöryhmä, aikakuva,faasikuva,grafiikka,plot


  12. mlODE100

    mlODE100.tex
    Mallinnetaan heiluria kolmessa ulottuvuudessa. Pisteen \(\mathbf{x}(t) = [x_1(t),x_2(t),x_3(t)]^T\), massa on \(m\), ja siihen kohdistuu voima \(\mathbf{F} = [0,0,-gm]^T\) (\(g = 9.81m/s^2\)). Pistettä rajoittaa pallon pinnan yhtälö \(\Phi(x)=x_1^2+x_2^2+x_3^2-1=0\). Pisteen liikettä mallintaa seuraava differentiaaliyhtälö: \[\mathbf{x}''(t) = \frac{1}{m}\bigg( \mathbf{F}- \frac{m\mathbf{x}'(t)^T\mathbf{H}\mathbf{x}'(t)+ \nabla \Phi\mathbf{F} }{|\nabla \Phi|^2} \nabla \Phi \bigg)\]

    Yhtälössä \(\nabla \Phi\) on funktion \(\Phi\) tilagradientti (\(x_i\) komponenttien suhteen) ja \(\mathbf{H}\) on Hessin matriisi funktiolle \(\Phi\) – tässä tapauksessa diagonaalimatriisi, jonka alkiot ovat kaikki \(2\).

    Lisäksi yhtälö tarvitsee alkuarvot \(\mathbf{x}(0)= \mathbf{x}_0\) ja \(\mathbf{x}'(0) = \mathbf{v}_0\).

    Ratkaise yhtälö kertalukua tiputtamalla, ja käyttämällä MATLAB-ratkaisinta ode45. Tarkastele tulosta graafisesti: ovatko trajektorit sitä mitä odotit? Ratkaise ongelma sitten käyttämällä metodia ode23. Vastaavatko tulokset nyt sitä mitä odotit?

    Vaativuus: 3+
    Tehtävän Latex-koodi:
    ../mlteht/mlODE/mlODE100.tex

    Avainsanat: mlODE,Matlabdiffyht,differentiaaliyhtaloita Matlab:lla, 3d-heiluri

    Matlabfunktioita: ode45,ode23, odexx


  13. mlODE102

    mlODE102
    Ratkaise toisen kertaluvun alkuarvotehtävä \[y''-0.05y'+0.15y = 2t; y'(0)=0,y(0)=0.\] Matlabin ratkaisijoita (ODE45, ODExx) varten 2. kertaluvun yhtälö tulee muuntaa 1. kertaluvun systeemiksi määrittelemällä \(y_1 = y, y_2= y'\), jolloin saadaan systeemi: \[\begin{cases} y_1' = y_2 \\ y_2' = ... \end{cases}\]

    Piirrä ratkaisukäyrä ja derivaatta sekä faasitasokuva.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlODE/mlODE102.tex

    Avainsanat: mlODE,Matlabdiffyht,differentiaaliyhtaloita Matlab:lla, numeeriset menetelmät, faasitaso

    Matlabfunktioita: ode45,odexx


  14. mlODE103

    Eulerin menetelmä on klassinen menetelmä differentiaaliyhtälöiden ratkaisemiseksi. Menetelmän lähtökohtana on yhtälö \[y'(t) = f(t,y(t)); y(t_0)= y_0,\] josta koetetaan ratkaista \(y(t)\) kun \(t= [t_0, t_n]\). Menetelmä perustuu \(t\):n diskretoinnille: \(t\) muunnetaan joksikin vektoriksi \(T = (t_0, t_0+h, \ldots, t_n)\), jonka jälkeen koetetaa etsiä vastaavia arvoja \(y(t_0+ih)\). Merkintöjen selvyyden vuoksi kirjoitetaan \(t_0+jh = t_j\). Eulerin menetelmässä approksimoidaan arvoa \(y(t_i)\) seuraavasti: \[y(t_i) = y(t_{i-1})+ h\, f(t_{i-1},y(t_{i-1})).\]

    Ratkaise Eulerin menetelmällä differentiaaliyhtälö \[y'(t) = y(t) \sin(t).\] Käytä eri \(h\):n arvoja, ja vertaa oikeaan ratkaisuun \(e^{1-\cos(t)}\).

    Eulerin menetelmä MATLABissa on helpointa toteuttaa yksinkertaisena silmukkana. Olettaen, että yhtälön oikea puoli on kirjoitettu funktioon f(t,y), Euler-iteraatio voidaan tehdä seuraavasti:

    for n = 2:length(t)
        y(n) = y(n-1)+h*f(t(n-1),y(n-1));
    end

    missä \(t\) on vektori joka on ratkaisuvälin diskretointi, ja \(h\) on \(t\):n pisteiden välinen etäisyys.


  15. mlODE104

    Rungen-Kutan menetelmä differentiaaliyhtälöiden ratkaisemiseksi on huomattavasti kehittynyt versio Eulerin menetelmästä. Menetelmässä määritellään seuraavasti: \[\begin{array}{l } k_1 = f(x_n, y_n),\\ k_2= f(x_n+\frac{h}{2},y_n+\frac{1}{2}hk_1),\\ k_3= f(x_n+\frac{h}{2},y_n+\frac{1}{2}hk_2),\\ k_4= f(x_n+h,y_n+hk_3).\\ \end{array}\] Diskretointiaskeleeksi tulee nyt \[y_{n+1} = y_n+hk = y_n+ \frac{h}{6}(k_1 + 2k_2+2k_3+k_4).\]

    • Ratkaise edellisen tehtävän yhtälö \[y'(t) = y(t) \sin(t); y(0)=1.\] käyttämällä Rungen-Kutan menetelmää. Vertaa tulosta sekä todelliseen ratkaisuun \(y(t)=e^{1-cos(t)} \), että Eulerin menetelmällä saavutettuun. Mitä huomaat tarvittavasta askelkoosta?

    • Ratkaise alkuarvotehtävä \[y'(t) = \sqrt{1-y^2}; y(0) = 0\] käyttämällä Rungen-Kutan menetelmää.


  16. mlODE105

    Ratkaise differentiaaliyhtälöryhmä \[\begin{cases} \frac{dx}{dt} = -\sigma x+ \rho y \\ \frac{dy}{dt} = \sigma x -y-xz \\ \frac{dz}{dt} = -\beta z + xy \\ \end{cases}\] numeerisesti välillä \([0,20]\), kun \(\sigma = 10, \rho = 28 \text{ ja } \beta = 8/3\). Piirrä ratkaisukäyrät samaan kuvaan, ja piirrä käyrät \(x(t)\) ja \(z(t)\) parametrisesti. Tämän jälkeen piirrä 3-ulotteinen parametrisoitu käyrä kaikista koordinaateista.

    Onko ratkaisu rajoitettu? Suppeneeko se kohti jotain arvoa?

    Kokeile muuttaa alkuarvoja, sekä parametrien arvoja. Vallitsevan teorian mukaan systeemi on kaoottinen dynaaminen systeemi, jonka käyttäytyminen voi muuttua merkitsevästi jo pienistä muutoksista lähtötilanteessa; itse asiassa termi perhosvaikutus keksittiin kuvaamaan juuri tämän systeemin käytöstä.

    Kolmiulotteinen parametrisoitu käyrä (tai pistejoukko) piirretään MATLABissa funktiolla plot3.


  17. mlODE106

    Kirjoita heiluriyhtälö \(\Theta'' + \frac{g}{L} \sin(\Theta) = 0\) ensimmäisen kertaluvun systeemiksi ja samantien Matlab-funktioksi (joko inline tai m-tiedosto). Voit ottaa \(g/L = 1.\)

    Laske ratkaisu sopivalla aikavälillä (esim. \(\left[0,10\right]\)) ja kolmella erilaisella alkuarvolla, joilla saat erityyppiset ratkaisut. Käytä ode45-funktiota.

    Piirrä ratkaisukäyrät aikatasoon ja trajektorit faasitasoon.

      

  18. mlODE107

    Reuna-arvotehtävä tähtäysmenetelmällä

    (Moler odes teht. \(7.19\) ss. 45–47.) Olkoon ratkaistavana reuna-arvotehtävä \(y''=y^2-1,\ \ y(0)=0,\ \ y(1)=1.\) Tee Matlab-funktio, joka ottaa argumentikseen "alkunopeuden" \(0\):ssa ja palauttaa vastaavan AA-tehtävän ratkaisun arvon \(1\):ssä, vähennä siitä vielä 1, niin sinulla on funktio, jota sopii tarjota fzero:lle.


  19. mlODE109

    Ratkaise differentiaaliyhtälö \[\frac{\partial u(t,x)}{\partial t} = -u-5e^{-t}\sin(5t)\] nelikulmiossa \([0,5]\times[-2,2]\), alkuarvokäyrällä \(u(0,x)= e^{-x^2}\).

    Piirrä tuloksista kuva:

    image

    Määrittele ensin sopivan harva diskretaatio välille \([-2,2]\), ja sen jälkeen tähän diskretaatioon sopiva alkuarvokäyrä, sen jälkeen ratkaise differentiaaliyhtälö numeerisesti (ode45) vuoroittain kullekin alkuarvolle.


  20. mlODE110

    Ratkaise nk. Rösslerin systeemi \[\begin{cases} y_1'(t) = -y_2(t)-y_3(t), \\ y_2'(t) = y_1(t)+ay_2(t), \\ y_3'(t) = b+y_3(t)(y_1(t)-c), \end{cases}\] missä \(a,b,c\) ovat parametreja, välillä \(t \in [0,100]\). Käytä alkuarvoja \(y(0)=[1,1,1]^T\) ja \((a,b,c) = (0.2,0.2,2.5).\)

    Kyseessä on kaoottinen systeemi, ts. ratkaisurata riippuu suuresti joko alkuarvoista ja parametreista. Saatuasi ratkaisun, piirrä ratkaisun kuvia alkuarvon muuttujana, ja tutki kuinka pienet muutokset aiheuttavat havaittavia eroja.


  21. mlODE200

    Ratkaise differentiaaliyhtälö \[y'(t) = -\frac{1}{t^2}+10 \bigg( y-\frac{1}{t} \bigg); y(1) = 1.\] käyttäen Backward-Euler menetelmää: \[y_{n+1} = y_{n} + hf(t_{n+1,y_{n+1}}).\] Jotta tämä onnistuisi, tulee jokaisella iteraation askeleella ratkaista yhtälö \[y_{n+1} - hf(t_{n+1,y_{n+1}}) = y_n\] \(y_{n+1}\):n suhteen. Tämä tarkoittaa, että yleisen ratkaisimen kirjoittaminen olisi vaikeaa, mutta tässä eksplisiittisessä tapauksessa se onnistuu.

    Vertaa sitten saamaasi tulosta MATLABin ode45 funktiolla saamaasi: kuinka selität eron?