http://www.math.hut.fi/teaching/v/3/01/H/ratk/harj2mlb.html    28.9.01

Harj. 2 LV pe 28.9.01

Yleisiä huomioita

Jos käytät dfield5-suuntekenttäåpiirrosta, voit Matlab- komentoikkunassa sanoa figure(2) , jolloin aktiiviseksi piirtoikkunaksi tulee suuntakenttäpiirros. Seuraavat plot-komennot kohdistuvat siihen. Eulerin ym. tuottamia approksimaatioita voit nyt piirrellä suuntakenttäpiirrokseen.

Horjuvuutta ode-ratkaisjoiden (ja kaikkien "funfun"ien) kutsutavassa: Onko 'f' vai f vai @f. Viimemainittu tyyli on tullut versio 6:ssa ja se yhdenmukaistaa, mutta nyt on siirtymäaika. Näyttää siltä, että inline-funktiota kutsuttaessa ei hipsukoita, kun taas m-tiedostofunktioissa hipsukat.

Teht. 2

Tapa 2 (olkoon tehtäväpaperissa oleva tapa 1)

a)

clear all; clf
f=inline('t.^2-y','t','y')   % AV teht. 5
a=0;b=2;n=10;h=(b-a)/n;x=a:h:b;
y0=1; y(1)=y0; 
for i=1:length(x)-1
   y(i+1)=y(i)+h*f(x(i),y(i));
end
xya=[x' y']
plot(x,y,'r');grid
hold on

clear y
a=0;b=2;n=20;h=(b-a)/n;x=a:h:b;
y0=1; y(1)=y0; 
for i=1:length(x)-1
   y(i+1)=y(i)+h*f(x(i),y(i));
end
xyb=[x' y']
plot(x,y,'b')

clear y
a=0;b=2;n=40;h=(b-a)/n;x=a:h:b;
y0=1; y(1)=y0; 
for i=1:length(x)-1
   y(i+1)=y(i)+h*f(x(i),y(i));
end
xyc=[x' y']
plot(x,y,'g')
grid

plot(xya(:,1),xya(:,2),'o')

Teht. 3

Piirretään huvin vuoksi suuntakenttä omalla skriptillä. suuntakentta.m
Sen tarvitsema data on suuuntakdata.m. Itse asiassa siinä on vain nämä komnnot, funktio on tehtävämme mukainen.
h=0.25;a=0;b=3;c=-2;d=3;   % Muutettavat parametrit
t=a:h:b;x=c:h:d;                          
f=inline('3*t.^2./(3*y.^2-4)','t','y')
Riittää suorittaa nämä ja hakea vain suuntakentta.m polun varrelle (vaikka omaan matlab-hakemistoon).

Sitten suoritetaan suuntakdata.m:n komennot ja komennetaan

 
       suuntakentta 
       axis square 
  
meuler-tyylillä Ota meuler, jos tarvitset.
  t=1:0.1:1.8;m=length(t)-1;
  [T,Y]=meuler(f,1,1.8,0,m);plot(T,Y)

   t=1:0.05:1.8;m=length(t)-1;
  [T,Y]=meuler(f,1,1.8,0,m);plot(T,Y,'r')

  t=1:0.01:1.8;m=length(t)-1;
  [T,Y]=meuler(f,1,1.8,0,m);plot(T,Y,'g')

  [T,Y]=ode45(f,[1,1.8],0);plot(T,Y,'c')

Teht. 4


Teht. 5

Kirjoitetaan oikea m-tiedosto funktiolle:
%%%%%%%%%%%%%%%%%% fh2t5.m %%%%%%%%%%%%%%%%%%%%%
function ypilkku=fh2t5(t,y)
a=0.03; b=1.610E-4;
ypilkku=a*y-b*y.^2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Tässä USA-data:

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

t=0:10:180;m=length(t)-1;
  [T,Y]=meuler('fh2t5',0,180,5.3,m);plot(T,Y,'g')

  [T,Y]=ode45('fh2t5',[0 180],5.3);plot(T,Y,'r')

td=0:30:180
yd=[5.3      13        31       63      106     150     230];
Yd=spline(T,Y,td)

[1800+td', yd' Yd']' 

Teht. 6