Ohjelmointi ja numeeriset menetelmät, luento 9, 22.3.

Differentiaaliyhtälöt

Yhtälön kertaluku ilmoittaa, kuinka korkeita derivaattoja siinä esiintyy. Esim.

y' - x y = y"

on toista kertalukua.

Jos yhtälöt sisältävät vain tuntemattoman funktion y ja sen derivaattojen lineaarikombinaatioita, yhtälöt ovat lineaarisia:

y - 2 y' + y" = 0,
y + x y' = ex.

Muuten yhtälö on epälineaarinen:

y y' = y",
y2 = y'.

Jos tuntemattoman funktion ja sen derivaattojen kertoimina esiintyy vain vakioita, kyseessä on vakiokertoiminen yhtälö.

Analyyttisiä ratkaisumenetelmiä on olemassa ensimmäisen kertaluvun yhtälöille ja korkeamman kertaluvun lineaarisille vakiokertoimisille yhtälöille.

Muunlaisille yhtälöille analyyttinen ratkaisu voi löytyä joissakin erikoistapauksissa.

Vaikka analyyttinen ratkaisu olisi olemassa, se voi olla hyvin mutkikas tai sen johtaminen voi olla vaikeaa.

Numeeriset menetelmät on yleensä helppo yleistää tilanteeseen, jossa on useita ratkaistavia funktioita.

Mikä tahansa kertaluvun n differentiaaliyhtälö voidaan aina korvata n:n ensimmäisen kertaluvun yhtälön ryhmällä ottamalla derivaatat uusiksi tuntemattomiksi funktioiksi.

Esimerkiksi yhtälö

y'' + xy' - y = 0

voidaan kirjoittaa yhtälöpariksi

u = y',
u' + x u - y = 0.

Riittää siis tutkia ensimmäisen kertaluvun yhtälöiden ratkaisemista.

Tällainen yhtälö voidaan kirjoittaa muotoon

y' = f (t, y (t)).


Stabiilisuus

Toisen kertaluvun alkuarvotehtävällä

y" - 10 y' - 11 y = 0,
y (0) = 1,
y' (0) = -1

on ratkaisu y (x ) = e-x. Ratkaisu lähenee nollaa, kun x kasvaa rajatta.

Jos alkuarvo on y (0) = 1 + a, yhtälön ratkaisu on

y (x) = ((11 / 12)a + 1) e-x + (a / 12) e11x.

Kun x kasvaa, tämä ratkaisu kasvaa rajatta, olipa a miten pieni tahansa.

Ratkaisu on epästabiili. Ratkaistaanpa yhtälö millä menetelmällä tahansa, pienikin pyöristysvirhe johtaa täysin virheelliseen ratkaisuun.

Varsinkin epälineaarisilla yhtälöillä on epästabiileja ratkaisuja (kaaos).

Olkoot y1 ja y2 kaksi ratkaisua. Ratkaisu on stabiili, jos jokaiselle \epsilon > 0 on olemassa \delta > 0 siten, että

| y1(t ) - y2(t ) | < \epsilon

kaikilla t >= 0 aina, kun

| y1(0) - y2(0) | < \delta.

Pieni alkuarvon häiriö vaikuttaa siis vain vähän ratkaisuun.

Ratkaisu on asymptoottisesti stabiili, jos

| y1(t ) - y2(t ) | -> 0,

kun t läehenee ääretöntä. Alkuarvon pieni häiriö voi aluksi vaikuttaa ratkaisuun, mutta poikkeama vaimenee kauemmas siirryttäessä ja ratkaisut lähestyvät toisiaan.

Stabiilikin yhtälöryhmä voi olla vaikeasti ratkaistava. Jos kertoimet (tarkemmin ottaen kerroinmatriisin ominaisarvojen reaaliosat) ovat hyvin erisuuret, yhtälöryhmää sanotaan kankeaksi (stiff).

Esimerkiksi:

y' = -2000 y + 999.75 u + 1000.25,
u' = y - u,
y (0) = 0, u (0) = -2.

Kerroinmatriisin

A = [ -2000 999.75 ; 1 -1 ]

ominaiasarvot ovat -2000.5 ja -0.5 ja tarkka ratkaisu

y = -1.499875 e-0.5 x + 0.499875 e-2000.5 x + 1,
u = -2.99975 e-0.5 x - 0.00025 e-2000.5 x + 1.

Kummassakin jälkimmäinen termi vaikuttaa vain hyvin pienillä x:n arvoilla. Origon lähellä tarvitaan hyvin lyhyttä askelpituutta, vaikka ensimmäinen termi muuttuu vain hitaasti.


Alkuarvotehtävät

Jos ratkaistavan funktion arvo ja mahdollisesti sen derivaattojen arvot tunnetaan yhdessä pisteessä, kyseessä on alkuarvotehtävä. Esimerkiksi ratkaistaessa kappaleen liikerataa liikeyhtälöstä tunnetaan paikka ja nopeus alkuhetkellä.

Yksiaskelmenetelmät

Tunnetaan funktion (ja derivaatan) arvo yhdessä pisteessä ja sen avulla lasketaan arvo seuraavassa pisteessä. Aikaisempia arvoja ei käytetä.

Tarkastellaan aluksi differentiaaliyhtälön ratkaisemista Taylorin sarjan avulla.

Oletetaan, että yhtälö on kirjoitettu muotoon

y' (x ) = f (x, y (x )),

missä y on ratkaistava funktio ja f (x, y (x )) on jokin x:n ja y(x):n lauseke. Ratkaistava funktio y voidaan kirjoittaa Taylorin sarjaksi

y (x ) = y(x0) + y' (x0) (x - x0) + (1/2) y" (x0) (x - x0)2 + ...

Käytetään esimerkkinä yhtälöä

y' (x ) = - 2 x y (x ), y (0)=1.

(Tämän ratkaisu on y (x ) = exp( - x2).)

Koska ratkaistavan funktion arvo tunnetaan pisteessä <x = 0, kehitetään y sarjaksi nollan ympäristössä. Pisteessä x = h funktion arvo on

y (h ) = y (0) + y' (0) h + (1/2) y" (0) h2 + (1/6) y''' (0) h3 + (1/2) y(4) (0) h4 + ...

Annetun alkuarvon perusteella y (0) = 1, ja alkuperäisestä yhtälöstä saadaan y' (0) = -2 x 0 x y (0) = 0. Sarjassa esiintyvät korkeammat derivaatat voidaan laskea derivoimalla alkuperöistä yhtälöä riittävän monta kertaa:

y'' = -2 y - 2 x y' = -2 y + 4 x2 y,
y''' = -4 y' - 2 xy'' = 12 xy - 8 x3y,
y(4) = -6 y'' - 2 xy''' = 12 y - 48x2y + 16 x3y.

Näiden arvot pisteessä x=0 ovat

y'' (0) = -2
y''' (0) = 0
y(4) (0) = +12

Kun nämä sijoitetaan sarjakehitelmään, saadaan

y (h ) = 1 - h2 + 2 h4 + ...

Kun mukaan otetaan äärellinen määrä alkupään termejä, saadaan polynomi, joka esittää likimääräistä ratkaisua nollan ympäristössä. Polynomin avulla voidaan laskea ratkaistavan funktion arvo pisteessä x = h.

Katkaistun sarjakehitelmän tarkkuus heikkenee, kun h kasvaa, joten se ei yleensä riitä kuvaamaan koko ratkaisua. Samaan tapaan voidaan laskea uusi kehitelmä pisteessä x = h ja sen avulla funktion arvo pisteessä x = 2 h.

Idea: etsitään ratkaistavalle funktiolle jokin laskettavissa oleva approksimaatio ja sen avulla ekstrapoloidaan funktiota pienen matkaa. Toistamalla tätä riittävän monta kertaa voidaan laskea funktion arvot mielivaltaisella välillä.

h on ratkaisumenetelmän askelpituus. Askelpituuden on oltava riittävän pieni, jotta ekstrapoloinnissa ei tehtäisi liian suurta virhettä.

Taylorin sarja käytännöllinen vain, jos derivaatoille saadaan helposti analyyttiset lausekkeet.

Esimerkkitehtävän ratkaisu Taylorin sarjan avulla kahdella eri askelpituudella h = 0.2 ja h = 0.1.

     x      y        y      exp(-x^2)
   0.00  1.00000  1.00000   1.00000
   0.10           0.99050   0.99005
   0.20  0.96400  0.96166   0.96079
   0.30           0.91512   0.91393
   0.40  0.85765  0.85352   0.85214
   0.50           0.78022   0.77880
   0.60  0.70336  0.69898   0.69768
   0.70           0.61369   0.61263
   0.80  0.53105  0.52803   0.52729
   0.90           0.44524   0.44486
   1.00  0.36881  0.36792   0.36788
Funktiota approksimoitiin Taylorin sarjalla, josta oli jätetty pois kaikki h5:een ja sitä korkeampiin potensseihin verrannolliset termit. Yhdellä askeleella tehtävä virhe on siis luokkaa h5. Tämä on menetelmän lokaali virhe. Menetelmä on kertalukua 4, mitä merkitään usein O (h4).

Kullakin askelella virhe voi kasvaa luokkaa h5 olevalla määrällä, joten välin päätepisteessä virhettä on kasaantunut 1/h x h5 = h4. Tämä on ratkaisun globaali virhe.


Eulerin menetelmä

Hyvin yksinkertainen ratkaisumenetelmä saadaan, kun askelpituus valitaan niin pieneksi, että jo Taylorin sarjan kaksi ensimmäistä termiä antavat riittävän hyvän approksimaation. Kun funktion ja sen derivaatan arvot pisteessä x tunnetaan, saadaan arvot pisteessä x+h kaavoista

y (x + h ) = y (x ) + h y' (x ),
y' (x + h ) = f (x + h, y (x + h ).

     ...
     call euler1(0.0, 1.0, 1.0, 0.1)

     real function f(x, y)
       real, intent(in) :: x, y
       f = -x*y
     end function

     subroutine euler1 (a, b, y0, h)
        real, intent(in) :: a, b, y0, h
        real :: x, y, dy, e
        x=a
        y=y0
        dy=f(x,y)
        e=exp(-x**2/2); e=abs((e-y)/e)
        write(*,'(4F10.6)') x,y,dy,e
 
        do while (x < b)
          x=x+h
          y=y+h*dy
          dy=f(x,y)
          e=exp(-x**2/2);   e=abs((e-y)/e)
          write(*,'(4F10.6)') x,y,dy,e
        end do
     end subroutine 
     end program

   x         y         f(x,y)   y:n suht. virhe
  0.000000  1.000000  0.000000  0.000000
  0.100000  1.000000 -0.100000  0.005013
  0.200000  0.990000 -0.198000  0.009999
  ...
  0.800000  0.750306 -0.600245  0.033268
  0.900000  0.690282 -0.621254  0.034941
  1.000000  0.628156 -0.628156  0.035655

Askeleen on yleensä oltava erittäin lyhyt, jotta päästäisiin kelvolliseen tarkkuuteen.

Menetelmä on stabiili vain, kun askel on riittävän lyhyt.


Implisiittinen Eulerin menetelmä

Eulerin menetelmä on eksplisiittinen menetelmä: kaikki seuraavan pisteen laskemiseen tarvittavat suureet tunnetaan etukäteen.

Eulerin menetelmässä lasketaan derivaatan arvo kunkin välin alkupisteessä ja derivaatan avulla arvioidaan funktion muutosta koko askeleella. Tulos on oikea vain, jos ratkaistavan funktion kuvaaja on suora. Jos kuvaaja on kaareva, olisi parempi käyttää derivaatan keskimääräistä arvoa. Sitä voitaisiin arvioida esimerkiksi keskiarvolla

< y' > = (y' (x ) + y' (x + h) / 2.

Tässä esiintyvä y' (x + h) = f (x + h, y (x + h )) ei ole tunnettu, joten kyseessä on implisiittinen menetelmä.

Tuntematonta derivaattaa voidaan arvioida käyttämällä alkuperäistä Eulerin menetelmää:

y (x + h) = y (x ) + h y' (x ),
y' (x + h ) = f (x + h, y (x +h)),
y (x + h ) = y (x ) + (h / 2) (y' (x ) + y' (x + h)).

Tätä iteraatiota voitaisiin vielä toistaa laskemalla korjatun y-arvon avulla derivaatan tarkempi arvo ja sen avulla taas uusi y.

Implisiittiset menetelmät ovat usein stabiilimpia kuin eksplisiittiset.

Ennustaja-korjaaja-menetelmien (predictor-corrector) ajatus: Ensin lasketaan nykyisessä pisteessä tunnettujen arvojen avulla likimääräinen ennuste (predictor) funktion arvolle seuraavassa pisteessä. Ennusteen avulla lasketaan korjattu arvo (corrector).


Rungen ja Kuttan menetelmä

Johdetaan esimerkin vuoksi toisen kertaluvun Rungen ja Kuttan menetelmä. Olkoon yhtälö muotoa

y' = f (x, y ),

jolloin

y'' = f'= fx + fy (dy / dx) = fx + fy f.

Taylorin sarjasta saadaan likiarvo

yn+1 = yn + h y' + (h2 /2) y''
= yn + h f + (h2 / 2) f'
= yn + h f + h2 ((1/2) fx + (1/2) fy f).

Merkitään

k1 = h f (xn, yn),
k2 = h f (xn + \alpha h, yn + \beta k1).

Koska f = y'', k1 ja k2 ovat arvioita y:n muutokselle, kun x kasvaa askeleen h verran.

Todellinen muutos esitetään näiden arvioiden lineaarikombinaationa:

yn+1 = yn + a k1 + b k2
= yn + a h f + b h f (xn + \alpha h, yn + \beta h f )
\approx yn + a h f + b h [ f + \alpha h fx + \beta h fy f ]
= yn + (a + b ) hf + h2 (\alpha b fx + \beta b fy f).

Vertaamalla tätä Taylorin sarjaan saadaan yhtälöryhmä

a + b = 1,
\alpha b = 1/2,
\beta b = 1/2.

Tämä toteutuu esimerkiksi, jos valitaan a = b = 1/2, \alpha = \beta = 1, jolloin

k1 = h f (xn, yn),
k2 = h f (xn + h, yn + k1) = h f (xn + h, yn + h f (xn, yn)),
yn+1 = yn + k1/2 + k2/2 = yn + (h /2) (f (xn, yn) + f (xn + h, yn + h f (xn, yn))

eli saadaan implisiittinen Eulerin menetelmä.

Usein käytetyn neljännen kertaluvun Rungen ja Kuttan menetelmän johtaminen on työlästä. Tulokseksi saadaan 11 yhtälöä, joissa 13 tuntematonta.

Tavallisimmin käytetty menetelmä on:

k1 = h f (xn, yn),
k2 = h f (xn + (1/2) h, yn + (1/2) k1),
k3 = h f (xn + (1/2) h, yn + (1/2) k2),
k4 = h f (xn + h, yn + k3 ),
yn+1 = yn + (1/6) (k1 + 2 k2 + 2 k3 + k4).

Tämän globaali virhe on luokkaa h4.

Esimerkiksi toisen kertaluvun yhtälö

y'' + y = 0

voidaan kirjoittaa yhtälöpariksi

y' = u,
u' = - y.

Analyyttinen ratkaisu alkuarvoilla y (0) = 0, y' (0) = 1 on y = sin x.

Ratkaisu Rungen ja Kuttan menetelmällä on pääpiirteittäin

        h=0.1
        x=0.0; y= 0.0 ;  u= 1.0 
        do while (x <= 1.0) 
          ky1 = h * u 
          ku1 = h * (-y) 
          ky2 = h * (u+ku1/2)
          ku2 = h * (-(y+ky1/2))
          ky3 = h * (u+ku2/2)
          ku3 = h * (-(y+ky2/2))
          ky4 = h * (u+ku3)
          ku4 = h * (-(y+ky3))
          y = y + (ky1 + 2*ky2 + 2*ky3 + ky4)/6.0
          u = u + (ku1 + 2*ku2 + 2*ku3 + ku4)/6.0 
          x = x+h
          write(*,*) x,y
        end do
Ohjelman tulostus (oikealla tarkka arvo):
  0.1000000      9.9833339E-02  9.9833421E-02
  0.2000000      0.1986692      0.1986693    
  0.3000000      0.2955200      0.2955202    
  0.4000000      0.3894180      0.3894183    
  0.5000000      0.4794252      0.4794255    
  0.6000000      0.5646421      0.5646425    
  0.7000000      0.6442173      0.6442177    
  0.8000001      0.7173556      0.7173561    
  0.9000001      0.7833264      0.7833270    
   1.000000      0.8414705      0.8414711    


Moniaskelmenetelmät

Yksiaskelmenetelmissä ei käytetä hyväksi tietoa aikaisemmin lasketuista arvoista.

Moniaskelmenetelmissä käytetään useita aikaisempia pisteitä seuraavan ekstrapolointiin.

Askelpituus voi olla suurempi, joten laskenta nopeampaa.

Lähtötiedot tunnetaan yleensä vain yhdessä pisteessä, joten aluksi on laskettava muutamia pisteitä jollakin yksiaskelmenetelmällä.

Yksiaskelmenetelmissä kukin askel lasketaan muista riippumatta, joten askelpituutta voi muuttaa tarpeen mukaan. Moniaskelmenetelmissä askelpituuden muuttaminen on työlästä; se edellyttää uuden lähtöpistejoukon laskemista.


Adamsin menetelmä

Kirjoitetaan yhtälö muotoon

dy = f (x, y) dx

ja integroidaan yhden askeleen yli

\intxn xn+1 dy =
yn+1 - yn = \intxn xn+1 ' f (x, y) d x.

Korvataan f (x, y) interpolointipolynomilla (nyt täytyy käyttää aikaisempiin arvoihin perustuvaa polynomia):

yn+1-yn \approx
\intxn^ xn+1 ( fn + s \Delta fn-1 + ((s +1)s / 2) \Delta2 fn-2) d x
=\ints =0s =1 ( fn + s \Delta fn-1 + ((s +1)s /r2) \Delta2 fn-2) h d s
= h (fn + (1/2) \Delta fn-1 + (5/12) \Delta2 fn-2 )
= h (fn + [fn - fn-1] /2 ] + [5 (fn - 2 fn-1 + fn-2) /12] )
= (h /12) (23 fn - 16 fn-1 + 5 fn-2).

Integrointiaskel on siis

yn+1 = yn + (h /12) (23 fn - 16 fn-1 + 5 fn-2).

Lokaali virhe on O (h4) ja globaali O (h3).

Esimerkkiyhtälön y'' + y = 0 ratkaisu Adamsin menetelmällä:

     ! alkuarvot; huijataan ja oletetaan ratkaisu tunnetuksi
     ! nama pitaisi laskea jollakin yksiaskelmenetelmalla
        g2 = cos(0)
        g1 = cos(0.1)
        g0 = cos(0.2)
        f2 = -sin(0)
        f1 = -sin(0.1)
        f0 = -sin(0.2)
        h = 0.1
        x = 0.2
        y = sin(0.2) 
        u = cos(0.2)

        ! varsinainen integrointisilmukka
        do while (x <=2.0)
          y = y + h/12*(23*g0-16*g1+5*g2) 
          u = u + h/12*(23*f0-16*f1+5*f2)

          g2=g1; g1=g0; g0=u
          f2=f1; f1=f0; f0=-y
          x = x+h
          write(*,*) x,y,u
       end do

       x               y          y (tarkka)           u          y'(tarkka) 
  0.3000000   0.2955149   0.2955202   0.9552994   0.9553365    
  0.4000000   0.3893969   0.3894183   0.9209886   0.9210610    
  0.5000000   0.4793826   0.4794255   0.8774783   0.8775826    
  0.6000000   0.5645716   0.5646425   0.8252031   0.8253356    
  0.7000000   0.6441129   0.6442177   0.7646864   0.7648422    
  0.8000001   0.7172123   0.7173561   0.6965334   0.6967067    
  0.9000001   0.7831398   0.7833270   0.6214256   0.6216099    
  1.000000    0.8412372   0.8414711   0.5401140   0.5403022    


Edellä esitetty menetelmä on yksi Adamsin-Bashforthin-menetelmistä, joita ovat mm.

yn+1 = yn + h fn,
yn+1 = yn + (h /2) (3 fn - fn-1),
yn+1 = yn + (h /12) (23 fn - 16 fn-1 + 5 fn-2),
yn+1 = yn + (h /24) (55 fn - 59 fn-1 + 37 fn-2 - 9 fn-3),

Nämä ovat eksplisiittisiä menetelmiä.

Implisiittisessä menetelmässä esiintyy yhtälö

yn+1 = yn + g + \beta h f (xn+1, yn+1),

missä g riippuu vain aikaisemmista x:n ja y:n arvoista. Tässä esiintyvä funktio f voi olla sellaista muotoa, ettei yn+1:lle saada analyyttistä lauseketta, vaan se on ratkaistava jollakin iterointimenetelmällä.

Adamsin-Moultonin menetelmät ovat implisiittisiä menetelmiä:

yn+1 = yn + h fn+1,
yn+1 = yn + (h /2) (fn+1 + fn),
yn+1 = yn + (h /12) (5 fn+1 + 8 fn - fn-1),
yn+1 = yn + (h /24) (9 fn+1 + 19 fn - 5 fn-1 + fn-2),

Implisiittiset menetelmät ovat stabiilimpia kuin eksplisiittiset.

Eksplisiittiset ja implisiittiset menetelmät voidaan yhdistää, jolloin vältetään yhtälön ratkaiseminen.

Käytetään Adamsin-Bashforthin menetelmää ennustajana ja Adamsin-Moultonin menetelmää korjaajana. Esimerkiksi:

yn+1 = yn + (h /24) (55 fn - 59 fn-1 + 37 fn-2 - 9 fn-3),
yn+1 = yn + (h /24) (9 fn+1 + 19 fn - 5 fn-1 + fn-2),

Esimerkkiyhtälön ratkaisu Adamsin ennustaja-korjaaja-menetelmällä:

  do while (x <=1.0)
    ! ennustaja
    y1 = y + h/12*(23*g0-16*g1+5*g2) 
    u1 = u + h/12*(23*f0-16*f1+5*f2)

    g2=g1; g1=g0; g0=u1
    f2=f1; f1=f0; f0=-y1

    ! korjaaja
    y2 = y +h/12*(5*g0+8*g1-g2)
    u2 = u +h/12*(5*f0+8*f1-f2)
     
    u = u2 ; y = y2 ;
    x = x+h
    write(*,*) x,y,u
  end do

    x           y         y (tarkka)    u         y'(tarkka)
  0.3000000   0.2955195   0.2955202   0.9553408   0.9553365    
  0.4000000   0.3894152   0.3894183   0.9210703   0.9210610    
  0.5000000   0.4794213   0.4794255   0.8775975   0.8775826    
  0.6000000   0.5646383   0.5646425   0.8253561   0.8253356    
  0.7000000   0.6442145   0.6442177   0.7648684   0.7648422    
  0.8000001   0.7173551   0.7173561   0.6967387   0.6967067    
  0.9000001   0.7833292   0.7833270   0.6216474   0.6216099    
  1.000000    0.8414777   0.8414711   0.5403448   0.5403022    


Ongelmia

Jotkin yhtälöt ovat sinänsä epästabiileja ja vaikeasti ratkaistavia menetelmästä riippumatta.

Ratkaisumenetelmä voi olla stabiili tai epästabiili ratkaistavasta yhtälöstä ja askelpituudesta riippuen.

Askelpituuden on oltava riittävän pieni. Liian suuri askel voi johtaa menetelmän epästabiilisuuteen.

Toisaalta hyvin pieni askelpituus tekee ratkaisun laskemisen työlääksi ja voi johtaa pyöristysvirheiden kasaantumiseen.

Hyvä tarkistuskeino on laskea ratkaisu uudestaan askelpituudella, joka on puolet alkuperäisestä. Jos tulokset ovat likimain samoja, ratkaisu on todennäköisesti lähellä oikeaa. Jos taas tulokset poikkeavat toisistaan huomattavasti, joko askelpituus on liian suuri, tai tehtävään liittyy muita ongelmia, jotka on syytä selvittää.

Mahdolliset singulariteetit: esimerkiksi vetovoima kasvaa rajatta etäisyyden pienentyessä. Kappaleiden lähestyessä tarkkuuden säilyttäminen vaatii aika-askeleen lyhentämistä. Ongelma voidaan (ainakin osittain) poistaa regularisoinnilla eli sopivilla ajan ja geometrian muunnoksilla.


Reuna-arvotehtävät

Tunnetaan ratkaistavan funktion arvot välin molemmissa päissä. Esimerkiksi ammuksen lähtö- ja putoamispaikka.

Alkuarvotehtävällä on yleensä yksikäsitteinen ratkaisu, jos siinä esiintyvät funktiot ovat riittävän siistejä.

Reuna-arvotehtävällä ei välttämättä ole lainkaan ratkaisua, tai ratkaisuja voi olla äärettömän monta.


Tähtäysmenetelmä

Tunnetaan esimerkiksi funktion arvot välin alku- ja päätepisteessä, mutta ei sen derivaattaa. Jotta alkuarvotehtävien ratkaisumenetelmiä voisi käyttää, täytyisi tietää derivaatan arvo välin alkupäässä. Kokeillaan erilaisia derivaatan arvoja, kunnes ratkaisu saadaan kulkemaan myös välin päätepisteen kautta.


Differenssimenetelmä

Korvataan derivaatat differensseillä:

y' (xi) \approx (yi+1 - yi-1) / (2 h ),
y'' (xi) \approx (yi+1 - 2 yi + yi-1) / h2.

Esimerkiksi yhtälö y'' + y = 0:

(yi+1 - 2yi + yi-1) / h2 + yi = 0

eli

yi-1 + (h2 - 2) yi + yi+1 = 0.

Reuna-arvoista saadaan lisäksi

y0 = 1, yn = 1.

Kun askel on h = 0.25, saadaan yhtälöt

y0 = 1,
y0 - 1.9375 y1 + y2 = 0,
y1 - 1.9375 y2 + y3 = 0,
y2 - 1.9375 y3 + y4 = 0,
y4 = 1

eli

  |  1   0        0       0       0  |  | y_0 |   | 1 |
  |  1  -1.9375&  1       0       0  |  | y_1 |   | 0 | 
  |  0   1       -1.9375  1       0  |  | y_2 | = | 0 |
  |  0   0        1      -1.9375  1  |  | y_3 |   | 0 |
  |  0   0        0       0       1  |  | y_4 |   | 1 |
Yhtälöryhmän ratkaisu on
     x       y      y(tarkka)
   0.0000  1.0000    1.0000
   0.2500  1.1047    1.1041
   0.5000  1.1403    1.1395
   0.7500  1.1047    1.1041
   1.0000  1.0000    1.0000
Lineaarinen differentiaaliyhtälö korvataan lineaarisella yhtälöryhmällä, jonka kerroinmatriisi on nauhamatriisi. Tilaa voidaan säästää tallettamalla vain lävistäjän suuntaiset nollasta poikkeavat vinorivit.

Yleensä voidaan käyttää normaalia Gaussin eliminointia. Kukin muuttuja eliminoidaan vain muutamasta yhtälöstä, joten laskenta-aika verrannollinen n:ään.

Jos askel on lyhyt, yhtälöiden määrä voi olla hyvin suuri, mikä voi aiheuttaa pyöristysvirheiden kasaantumista. Jos kerroinmatriisi on diagonaalidominantti, iteratiiviset menetelmät ovat käyttökelpoisia.

Tarkkuutta voidaan parantaa

Jos alkuperäinen yhtälö on epälineaarinen, tuloksena on epälineaarinen yhtälöryhmä, jota voi yrittää ratkaista iteroimalla. Vaikeutena on riittävän hyvän alkuarvon löytäminen, jotta ratkaisu suppenisi. Jos konvergoivaa ratkaisua ei löydy, kannattaa yrittää tähtäysmenetelmällä.