suuntakdata % Funktiomääritys, kuva-ala, askel, editoi oma esimerkkisi. suuntakentta % Yleensä ajetaan sellaisenaan vain kerran. suuntakiso % Editoi tilanteen mukaan, useita kutsuja ... suuntakratk % Ratkaisukäyriä, useita kutsuja.Voit tietysti ajaa suuntakdata-osan suoraan tästä leikkaa/liimaa-menetelmällä.
% suuntakdata.m % h=0.2; % Suuntakentän hilaväli a=-1;b=1; % t-rajat c=0;d=2; % x-rajat t=a:h:b;x=c:h:d; f=inline('x-t','t','x') % Diff-yhtälön määritys. % x'=f(t,x)
suuntakentta title('x''=x-t') suuntakiso suuntakratk % Voidaan valita yksi tai useampia alkupisteitä ja ENTER % Kutsutaan heti uudestaan, jos halutaan vielä lisää. % Voidaan maksimoida vuorovaikutteisuus sekvenssillä: % suuntak KLIK ENTER, suuntak KLIK ENTER ...
% suuntakdata.m % h=0.2; % Suuntakentän hilaväli a=0.1;b=2; % t-rajat c=0;d=2; % x-rajat t=a:h:b;x=c:h:d; f=inline('x./t','t','x') % Diff-yhtälön määritys. % x'=f(t,x)
suuntakentta title('x''=x/t') suuntakiso % Oletusarvo antaa vain isoja korkeusarvoja (johtuen nimittäjän pienuudesta). % Lisätään isokliinejä antamalla haluttuja korkeusarvoja: cc=contour(t,x,Z,[0.6,0.5,0.2,0.1,0],'g');clabel(cc,'manual') % Täytetään vielä keskiaukkoa: contour(t,x,Z,1:0.2:2,'g') % Jätetään korkeusarvot (kulmakerroinarvot) pois. suuntakratk % Voidaan valita yksi tai useampia alkupisteitä ja ENTER % Kutsutaan heti uudestaan, jos halutaan vielä lisää. % Voidaan maksimoida vuorovaikutteisuus sekvenssillä: % suuntak KLIK ENTER, suuntak KLIK ENTER ...
Tämä on sikäli harvinainen tilanne, että isokliinit ja ratkaisufunktiot yhtyvät. Piirrettiin siksi vain 3 ratkaisukäyrää.
suuntakdata % Funktiomääritys, kuva-ala, askel, editoi oma esimerkkisi. suuntakentta % Yleensä ajetaan sellaisenaan vain kerran. suuntakiso % Editoi tilanteen mukaan, useita kutsuja ... suuntakratk % Ratkaisukäyriä, useita kutsuja.Voit tietysti ajaa suuntakdata-osan suoraan tästä leikkaa/liimaa-menetelmällä.
% suuntakdata.m % h=0.2; % Suuntakentän hilaväli a=-2;b=2; % t-rajat c=-2;d=2; % x-rajat t=a:h:b;x=c:h:d; f=inline('x.^2','t','x') % Diff-yhtälön määritys. % x'=f(t,x)
suuntakentta title('x''=x^2') suuntakiso suuntakratk % Voidaan valita yksi tai useampia alkupisteitä ja ENTER % Kutsutaan heti uudestaan, jos halutaan vielä lisää. % Voidaan maksimoida vuorovaikutteisuus sekvenssillä: % suuntak KLIK ENTER, suuntak KLIK ENTER ...
Autonomisuus näkyy yhtälöstä, sillä oikea puoli on muotoa f(x). Kuvasta se näkyy siitä, että suuntekentän viiva-alkiot ovat samansuuntaisia vaakasuorilla, mikä ilmenee isokliineistä niin, että ne ovat t-akselin (vaaka-akselin) suuntaisia. Ratkaisukäyrät saadaan toisistaan siirrolla t-akselin suunnassa.
% suuntakdata.m % editoidaan: h=0.2; % Suuntakentän hilaväli a=-2;b=2; % t-rajat c=-2;d=2; % x-rajat t=a:h:b;x=c:h:d; f=inline('x/2-exp(-t)','t','x') % Diff-yhtälön määritys. % x'=f(t,x)
suuntakentta title('x''=x/2-e^t') suuntakiso suuntakratk % Voidaan valita yksi tai useampia alkupisteitä ja ENTER % Kutsutaan heti uudestaan, jos halutaan vielä lisää. % Voidaan maksimoida vuorovaikutteisuus sekvenssillä: % suuntak KLIK ENTER, suuntak KLIK ENTER ...Analyyttinen ratkaisu Maplella
> dyht:=diff(x(t),t)=x(t)/2-exp(-t); d dyht := -- x(t) = 1/2 x(t) - exp(-t) dt > dsolve({dyht,x(0)=-1},x(t)); x(t) = 2/3 exp(-t) - 5/3 exp(1/2 t) > lprint(%); x(t) = 2/3*exp(-t)-5/3*exp(1/2*t)Piirretään tarkka anal. ratk. samaan kuvaan:
t=linspace(-1.5,1);plot(t,2/3*exp(-t)-5/3*exp(1/2*t))Menee varsin tarkkaan samaan kuin Matlab:n ode45-ratkaisu (kuten sinipunaväri näyttää).
% suuntakdata.m % editoidaan: h=0.1; % Suuntakentän hilaväli a=0;b=pi+1; % t-rajat c=pi-1/2;d=pi+1/2; % x-rajat t=a:h:b;x=c:h:d; f=inline('(t.^3-1)./cos(x)','t','x') % Diff-yhtälön määritys. % x'=f(t,x)
suuntakentta axis([a-0.1,b+0.1,c-0.1,d+0.1]) axis normal title('x''=(t.^3-1)./cos(x)') suuntakiso suuntakratk % Voidaan valita yksi tai useampia alkupisteitä ja ENTER % Kutsutaan heti uudestaan, jos halutaan vielä lisää. % Voidaan maksimoida vuorovaikutteisuus sekvenssillä: % suuntak KLIK ENTER, suuntak KLIK ENTER ... [TT,XX]=ode45(f,[1,1+0.5],3); plot(TT,XX,'r') [TT,XX]=ode45(f,[1,1-0.5],3); plot(TT,XX,'r') h=0.1; % Suuntakentän hilaväli a=pi-0.5;b=pi+0.5; % t-rajat c=pi/2-1/2;d=pi/2+1/2; % x-rajat t=a:h:b;x=c:h:d; suuntakentta axis([a-0.1,b+0.1,c-0.1,d+0.1]) suuntakiso [TT,XX]=ode45(f,[pi,pi+0.1],pi/2-0.1); plot(TT,XX,'r') % Saadaan ainakin % väriä
t=linspace(0,4);C=1-pi-pi^4/4 p=t.^4/4-t+C;plot(t,p) t=pi;p=t.^4/4-t+C t=linspace(3,pi);p=t.^4/4-t+C;plot(t,p) C = -26.4939 >> roots([1/4,0,0,-1,C+1]) ans = 3.2753 -0.0990 + 3.1793i -0.0990 - 3.1793i -3.0772 >> roots([1/4,0,0,-1,C-1]) ans = 3.3323 -0.0954 + 3.2398i -0.0954 - 3.2398i -3.1416 t=linspace(3.0726+.01,pi-.01);x=asin(t.^4/4-t+C);plot(t,x)
Analyyttinen ratkaisu Tuo alkuehto on iljettävä, siinähän oikea puoli tulee äärettömäksi. Kannattaa valita kohtuullisempi AE. Katsotaan ratkaisuparvea:
f=inline('sin(x)-t.^4/4-t','t','x') t=linspace(-2,4,30);x=linspace(-pi/2+0.1,pi/2-0.1,30); [T,X]=meshgrid(t,x);Z=f(T,X); %contour(t,x,Z) %cc=contour(t,x,Z);clabel(cc,'manual') cc=contour(t,x,Z,-50:50);clabel(cc,'manual')
Kuvan korkeusarvot ovat integroimisvakion arvoja.
Tällaisia jaksovöitä on päällekkäin loputtomiin. Suorat x=pi/2+n*pi edustavat erikoispisteitä, joissa ratkaisukäyrien tangentit ovat pystysuorassa.
% suuntakdata.m % editoidaan: h=0.1; % Suuntakentän hilaväli a=0;b=2; % t-rajat c=0;d=2; % x-rajat t=a:h:b;x=c:h:d; f=inline('2*sqrt(t.*x)','t','x') % Diff-yhtälön määritys. % x'=f(t,x)
suuntakentta title('x''=2*sqrt(t.*x)') suuntakiso suuntakratk
Tämäpä oli kaunis ja sävyisä tapaus.
Katsotaan kuitenkin analyyttistä ratkaisua:
Tekipä tuon Maplella tai käsin, niin helposti päätyy kahteen ratkaisuun. Kuten Maple-kuvastakin näkyy, toisessa derivaatta on negatiivinen, joten se ei toteuta diff-yhtälöä, jos siinä ajatellaan neliöjuurille positiiviset haarat. Siten on valittava C=1/3, koska valinnalla C=-5/3 saadaan derivaatan arvoksi -2 pisteessä t=1.
Teachers: Heikki Apiola , email:heikki.apiola@hut.fi