numabj.mws
Ratkaiseminen : Ohjelmistojen käyttö

Adamsin – Bashforthin menetelmän johto

Integroimalla differentiaaliyhtälö y ' = f( x , y ) puolittain välin [x[k], x[k+1]] yli saadaan

y(x[k+1])-y(x[k]) = int(f(x,y(x)),x = x[k] .. x[k+1... .

Adamsin – Bashforthin menetelmässä integraalille lasketaan approksimaatio korvaamalla funktio f( x , y ( x )) kolmannen asteen interpolaatiopolynomilla. Tämän tukipisteinä (so. pisteinä, joiden kautta polynomin kuvaaja kulkee) ovat neljä edellistä jo laskettua pistettä ( x[j], f(x[j],y[j]) ), j = k - 3, k - 2, k - 1, k .

> tukipisteet:= x[k]-3*h, x[k]-2*h, x[k]-h, x[k];

tukipisteet := x[k]-3*h, x[k]-2*h, x[k]-h, x[k]

> funktionarvot:= f[k-3], f[k-2], f[k-1], f[k];

funktionarvot := f[k-3], f[k-2], f[k-1], f[k]

Interpolaatiopolynomi (muuttujana t ) saadaan interp -komennolla, joka löytyy linalg -paketista:

> with(linalg):

> p:= interp([tukipisteet], [funktionarvot], t):
expand(%);

f[k]+1/2*t^3*f[k-2]/(h^3)-1/2*t^3*f[k-1]/(h^3)+1/6*...
f[k]+1/2*t^3*f[k-2]/(h^3)-1/2*t^3*f[k-1]/(h^3)+1/6*...
f[k]+1/2*t^3*f[k-2]/(h^3)-1/2*t^3*f[k-1]/(h^3)+1/6*...
f[k]+1/2*t^3*f[k-2]/(h^3)-1/2*t^3*f[k-1]/(h^3)+1/6*...
f[k]+1/2*t^3*f[k-2]/(h^3)-1/2*t^3*f[k-1]/(h^3)+1/6*...
f[k]+1/2*t^3*f[k-2]/(h^3)-1/2*t^3*f[k-1]/(h^3)+1/6*...

Integraalin approksimaatio saadaan integroimalla polynomi:

> integraali:= int(p, t=x[k]..x[k]+h):
simplify(%);

-1/24*h*(-55*f[k]+9*f[k-3]+59*f[k-1]-37*f[k-2])


Ratkaiseminen: Adamsin – Bashforthin menetelmä

SKK & MS 31.05.2001