H/ratk/harj2.html

22.9.2000 HA

Harj. 2 ratkaisuja

Teht 3

Käytetään kurssin matlab-hakemistossa olevaa skriptiä skkaikki, joka sisältää osat:

a)-kohta: Laode s. 125 teht. 5

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)

Nyt ajetaan

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  ...

b)-kohta: Laode s. 125 teht. 8

% 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)

Nyt ajetaan

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ää.

Teht. 4

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)

Nyt ajetaan

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.

Teht. 5

Voit tietysti ajaa suuntakdata-osan suoraan tästä leikkaa/liimaa-menetelmällä.
% 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)

Nyt ajetaan

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ää).

Teht. 6

a) Laode 6 s. 140

% 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)

Nyt ajetaan

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.

Maplella

Tällaisia jaksovöitä on päällekkäin loputtomiin. Suorat x=pi/2+n*pi edustavat erikoispisteitä, joissa ratkaisukäyrien tangentit ovat pystysuorassa.


6 b) Laode 7 s. 140

% 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)

Nyt ajetaan

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