Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
Numerikus Matematika a gyakorlatbanDr. Vertse Tamas
JegyzetSzeptember 12.
Kovetelmenyek: jelenlet ajanlott, sajat TIGRIS account kell, erdemjegyet a programra
kapnak
Bevezetes a VMS-be : file szerkezet, DEL, PU utasitasok.
Bevezetes a FORTRAN nyelvbeFOR LINK
COP.COM
F.COM
szeptemeber 19
JEGYZET.txt
Fuggvenykozelitesek, inter- es extrapolacioLagrange interpolacio
LAG.FOR
Spline interpolacio
@COP TRIDAG.FOR
@COP TRIDAG.DAT
ED TRIDAG.RES
TRIDAG.FOR
VSW.FOR
Februar 15.
Az ED editor hasznalata
Egyszeru Fortran program bemutatasa: LAG.FOR
LAG.COM
ASS
DEASS
LAGRANGE.FOR
Februar 22.
A Lagrange interpolacioval nem kapunk becslest az interpolacio hibajara. Ebben segıt a
Nevill fele algoritmus.
SUBROUTINE POLINT(XA,YA,N,X,Y,DY)
@COP POLINT.FOR
@COP MAINPOLINT.FOR
Interpolacios polinom egyutthatoinak szamıtasa
Vandermonde matrix egyenletrendszerenek megoldasa
MAINPOLCOF.FOR
POLCOF.FOR
FOR MAINPOLCOF,POLCOF
LIN MAINPOLCOG,POLCOF
1 undefined symbol: POLINT
LIN MAINPOLCOF,POLCOF,POLINT
R MAINPOLCOF
FORTRAN PAUSE
Hibakereses DEBUGER-rel
ED FDBG.COM
*C
$FOR/NOOP/DEB ’P1
$LIN/DEB ’P1
CNRL Z
*EX
@FDBG MAINPOLCOF,POLCOF,POLINT
R MAINPOLCOF
implicit real*8 (a-h,o-z)
beszurasa a MAINPOLINT foprogramba es a POLCOF subroutine-ba
@F JO
erredmeny:
p(x) = −6.05 + 0.44167x+ 0.7x2 − 0.09167x3
Marcius 1.
Inverzinterpolacio
@COP INVERZPOL.FOR
A legkisebb negyzetek modszereLinearis eset: normalegyenletek
1. pelda
illesztes x=0-ra centralt polinommal
φj(x) = xj
@COP NORMAL.FOR
@COP NORMAL.DAT
FOR/D LINES NORMAL
ED fd.com
*C
Polinom helyettesıtesi ertekenek kiszamıtasa Horner elrendezessel
FUNCTION HORN(N,A,X)
Visszateres a legkisebb negyzetek modszerehez
Tovabbra is linearis eset.
2. pelda
Modositsuk a NORMAL.FOR programot arra az esetre, ha a φj(x) = (x − a)j tehat a-ra
centralt polinom
read(5,*) a
do i=1,n
x(i)=x(i)-a
enddo
Megoldas:
NORMAL1.FOR
NORMAL1.DAT
3. pelda
exponencialis fuggvenyek linearkombinacioja:
φj(x) = e−λjx
a λj bomlasi allandok ertekei adottak.
@COP NORMAL2.FOR
@COP NORMAL2.DAT
@F NORMAL2
R NORMAL2
fortran stop
ED NORMAL2.RES
c(0)=5.0503
c(1)=2.9718
y(x) = 5.0503e−x + 2.9718e−0.5x
Ha a λ-kat is ismeretleneknek tekintenenk, akkor ez a problema a nemlinearis egyen-
letrendszerek megoldasat koveteli.
A normalegyenletek linearis egyenletrendszerek. Ezek megoldasat Gauss Jordan eliminacioval
(kikuszobolessel) vegeztuk. Ezt a feladatot a
SUBROUTINE GAUSSJ(A,N,NP,B,M, MP)
vegezte el. A parameterek jelentese.
Egyutthatok matrixa: A(NP,NP)
ismeretlenek szama: N¡=NP
Tobbszoros jobboldal: B(NP,MP)
A szamolas vegen ez fogja tartalmazni a megoldast.
Linearis egyenletrendszerek megoldasa
Linearis egyenletrendszerek megoldasaDirekt modszerek:
Gauss kikuszoboleses modszer: ismeretlenek fokozatos kikuszobolese, amig felso haromszogmatrix-
ot kapunk. Ezutan a kapott egyenletrendszert visszahelyettesitessel oldjuk meg.
Gauss modszer determinans kiszamitasara: foatlobeli elemek szorzata (−1)k, ahol k a
sorcserek szama a haromszogmatrixa alakitas soran.
Matrixinverzio Gauss modszerrel:
Inverzmatrix oszlopvektorai az ismeretlenek, jobboldalon az egysegvektorok.
Gauss-Jordan kikuszoboles (eliminacio). Hasonlo a Gauss modszerhez, de ennel az xk is-
meretleneket valamennyi egyenletbol kikuszoboljuk (nemcsak az adott egyenlet alattiakbol).
A k=n-1 edik leszarmaztatott egyenletrendszer matrixa diagonalis lesz, igy a foatlobeli ele-
mekkel beosztva egysegmatrixot kapunk. A jobboldal fogja az inverzmatrixot tartalmazni.
Foelem kivalasztas(pivoting)
reszleges
teljes
Linearis egyenletrendszer megoldasa Gauss-Jordan eliminacioval
@COP MAINGAUSJ.FOR
@COP GAUSJ.DAT
@COP GAUSJ.COM
Matrixinverzio Gauss-Jordan eliminacioval
@COP GAUSJINV.FOR
@COP GAUSJINV.DAT
@F GAUSJINV
R GAUSJINV
Linearis egyenletrendszer megoldasa haromszogmatrixokra bontassal A=L . U
Ax = b
A.x = L.(Ux) = L.y = b, ahol U.x = y
L.y = b elorehelyettesitessel oldhato meg, y ismereteben az U.x = y visszahelyettesitessel.
A = L.U felbontas a Crout fele algoritmussal tortenik. Tarolas az A-matrix helyen (ezert
eloszor A-t celszeru kimenteni).
@COP LU.FOR
@COP LU.DAT
@F LU
R LU
ED LU.RES
Determinans szamıtasa hasonloan tortenhet, mint a Gauss modszernel.
Matrixinvertalas LU felbontassal
A.X = E egyenletrendszerek megoldasa reven
@COP LUINVERZ.FOR
@COP LUINVERZ.DAT
@F LUINVERZ
R LUINVERZ
ED LUINVERZ.RES
Vege a direkt modszereknek
Marcius 8.
Iteracios modszerek linearis egyenletrendszerek megoldasara. Ezeket a direkt modszerrel
kapott kozelito megoldas pontosıtasara hasznaljuk.
Kozelıto megoldas:x0
Eredeti egyenlet: A.x = b
A.x0 = b0 = b+ c0 = A.x− (b− b0)
Lin. egyenletrendszer az x− x0 korrekciora:
A.(x− x0) = b− b0 = c
Mivel ennek megoldasa is numerikus, ezert ezt is csak kozelitoen kapjuk.
Iteracio a korrekciokra
@COP MPROVE.FOR
@COP MPROVE.DAT
@F MPROVE
ED MPROVE.RES
Eloszor kozelıto megoldast generalunk, ugy, hogy az LU felbontassal kapott eredmenyt
kisse elrontjuk. Ez lesz az x0 kezdo megoldasunk. Az iteraciot addig folytatjuk, amig ket
egymasutani megoldas elterese adott pontossagnal kisebb lesz.
Nemlinearis egyenletek megoldasa.
Ha f(x) folytonos es sign(f(a)) 6= sign(f(b)) akkor letezik gyok [a,b]-ben.
Intervallum felezesi eljarassal (bisection)
Ez biztos, de lassu modszer.
Pelda: f(x) = −1− x ∗ (1− x2) [a, b] = [1, 1.5] acc=1.E-7
@cop rtbis.for
@f rtbis
r rtbis
1.,1.5,1.e-7
root is in the interval [ 1.00000, 1.50000]
the root is: x= 1.32472+-0.1E-06
Masik pelda:f(x, c) = e−c∗x
@cop rtbis1.for
@cop khi2.dat
@f rtbis1
r rtbis1
0.5,2.5,1.e-7
root is in the interval [ 0.50000, 2.50000]
the root is: x= 0.95099,+-0.1E-06
Hurmodszer, szelo modszer: linearis interpolacio
Erinto modszer, Newton-Raphson modszer:
xk+1 = xk − f(xk)/f′(xk)
kvadratikusan konvergal, ha jo kezdoerteket adunk. Nem mindig konvergal.
Generaljunk kezdoerteket az intervallum felezesi modszerrel
f(x, c) = e−c∗x
@cop nlinkhi2.for
@f nlinkhi2
r nlinkhi2
the root is: 0.95099+-0.1E-5
FORTRAN STOP
Nemlinearis egyenletrendszerek megoldasa
Feladat: megoldando a kovetkezo ketismeretlenes nemlinearis egyenletrendszer
F1(x1, x2) = x21 + 3x1 − x2 − 1 = 0
F2(x1, x2) = x1x2 + 3x2 + 9 = 0
β1 = −F1
β2 = −F2
α1,1 = ∂F1
∂x1 = 2x1 + 3
α1,2 = ∂F1
∂x2 = −1
α2,1 = ∂F2
∂x1 = x2
α2,2 = ∂F2
∂xx = x1 + 3
tehat a Jacobi matrix:
α1,1α1,2J(x) = α2,1α2,2
kezdoertekek: x(0)1 = −4x
(0)2 = 6
Megoldas: x1 = −4.5251023x2 = 5.9012437
A tobbparameteres legkisebb negyzetes illesztesi feladat egyenletrendszerre vezet.
Nemlinearis egyenletrendszerre nincs biztosan mukodo modszer. Ha van elfogadhato
kezdoertek sorozatunk, akkor az altalanosıtott Newton-Raphson modszerrel probalkozhatunk.
Feladat:
f(x, c(0 : 1)) = c(0) ∗ e−c(1)∗x illesztese az xi, yi alappontokra.
Ez ketismeretlenes nemlinearis egyenletrendszerre vezet.
@cop mnewt1.for
@cop mnewt1.dat
@f mnewt1
r mnewt1
FORTRAN STOP
ed mnewt1.res
*c
Marcius 22
Kozelıto (numerikus) differencialas
Differenciahanyadossal valo kozelıtes.
elore(progresszıv), hatra(retrograd) es centralis differenciak.
Tablazatosan (alappontokban) adott fuggveny derivalasa:
Interpolacios polinommal, majd a polinom derivalasa.
Spline interpolacioval pl. Ekkor a derivalt masodfoku polinomja x-nek, ezert a magasab-
brendu derivaltak szamolasa problemas.
Kozelıtes Csebishev polinomokkal:
SUBROUTINE CHEBFT(A,B,C,N,FUNC)
A FUNC(X) fuggvenyt kozelıti N-edfoku Csebisev polinommal, tehat kiszamıtja a C[1:N]
sorfejtesi egyutthatokat.
Ezutan megvizsgaljuk az egyutthatokat es esetleg levagjuk a sorfejtest.
Kozelıto fuggveny szamolasa Clenshow rekurzioval.
FUNCTION CHEBEV(A,B,C,M,X)
A derivalt polinom egyutthatoinak szamolasa.
Mi a teendo, ha a fuggveny csak tablazatosan adott?
i) interpolacio
ii) interpolacios polinom Csebisev sorfejtesi egyutthatoinak meghatarozasa.
iii) a derivalt fuggveny Csebisev sorfejtesi egyutthatoinak szamolasa.
SUBROUTINE CHDER(A,B,C,CDER,N)
a derivalt egyutthatoi a CDER tombben
@COP CHEBDIF.FOR
@COP WERNER.NUM input file
@F CHEBDIF
R CHEBDIF
ed chebdif.res
*c
derivalt fuggveny kiırasa meg egyszer a WERNER.DEN1 fileba is. Lasd kesobb.
Aprilis 12
Ha a Csebisev sorfejtesi egyutthatokat ismerjuk, akkor szamolhatjuk az integral sorfejtesi
egyutthatoit is.
@COP CHEBINT.FOR
@COP WERNER.DEN input file
R CHEBINT
ED CHEBINT.RES
*C
ED WERNER.NUM1
*C
Ez kozelıtoleg megegyezik a WERNER.NUM-mal, aminek derivaltja a werner.den1, amit
elozoleg megorıztunk.
Numerikus integralas (Kvadratura)
A Lagrange interpolacios polinom kiintegralasa Newton-Cotes formulara vezet. Egyenlokozu
beosztasok: trapez-formula, hibatag
f(x) = ex
@COP TRAGYAK.FOR
a Simpson formula, mint a trapez-formula javitoformulaja.
@COP SIMP.FOR
f(x) = sin(x)
Javıtoformula a Simpson modszerre.
Feladat: ırjunk programot az f(x) = x3 fuggveny ekvidisztans pontokban vett Simpson
kozelıtessel szamolt integraljanak es becsult hibajanak a kiszamıtasara.
megoldas: SIMPGYAK.FOR
Romberg integralas
@COP MAINROM.FOR
@COP ROMB.DAT
@F MAINROM
R MAINROM
ED ROMB.RES
*C
Gauss kvadraturak:
Veges [a, b] intervallumon a Gauss-Legendre kvadraturat hasznaljuk. n-pontos kvadraturanal
az osztaspontok az n-edfoku Legendre polinom zerushelyei. Az alappontok es a sulyok
megtalalhatok pl. Abramowitz-Stegun, Handbook of Mathematical Functions, Table 25.4
916.oldal
Pl. 10 pontos Gauss-Legendre kvadratura:
@COP QGAUS.FOR
Gauss kvadraturak mas orthogonalis polinomok segitsegevel.
Gauss Csebisev kvadratura,
Gauss Hermite,
Gauss Laguerre kvadraturak.
Hogyan szamıtsuk az alappontokat es a sulyokat Gauss-Legendre kvadraturara?
Mintaprogram:
@COP GAULEG.FOR
@COP GAULEG.DAT input file
a,b,n
@F GAULEG
R GAULEG
ED GAULEG.RES
*C
GL.FOR filebol beszerkeszthetjuk az alappontok es a sulyok pontos ertekeit a programba.
Aprilis 19
Tobbszoros integralok kiszamıtasa
Ketszeres integralok
I =
∫ ∫
T
f(x, y)dxdy,
ahol T ketdimenzios zart halmaz. Jeloljuk a = min(x,y)∈T {y} es b = max(x,y)∈T {y}. Tegyuk
fel, hogy barmely y0 ∈ [a, b]-re az y = y0 egyenes maximum ket ponban metszi T hatarat.
Ha ez nem teljesul, akkor darabolassal alakıtjuk T -t olyan T1, ..., Tk tartomanyok osszegere,
melyekre ez a feltetel mar teljesul. Jelolje az y = y0 egyenes balodali metszespontjat a ϕ(y0),
a jobboldali metszespontjat ψ(y0). Ekkor
I =
∫ b
a
F (y)dy, F (y) =
∫ ψ(y)
ϕ(y)
f(x, y)dx
Ezzel a ketszeres integral kiszamıtasat egyszeres integralok kiszamıtasara vezettuk vissza:
I =n∑
k=1
F (yk)A(n)k
F (yk) =
mk∑
i=1
f(x(k)i , yk)A
(mk)i ,
ahol az mk, k = 1, ..., n alappont a [ϕ(yk), ψ(yk)] intervallumon. Ezekkel kifejezve
I =
n∑
k=1
mk∑
i=1
f(x(k)i , yk)A
(n)k A
(mk)i .
A legegyszerubb esetben, amikor T teglalap, akkor az x beli alappontrendszer fuggetlen
yk-tol: mk = m x(k)i = xi, i = 1, ..,m
I =
n∑
k=1
m∑
i=1
f(xi, yk)A(n)k A
(m)i .
Peldakeppen a ktszeres integral kiszamıtasara, szamıtsuk ki a felgomb terfogatat numerikus
integralassal.
Vegezzunk 10 pontos Gauss-Legendre kvadraturat mindket integralra:
@COP QGAUS2D.FOR
@F QGAUS2D
R QGAUS2D
Lathato, hogy a 10 pontos Gauss kvadratura nem eleg pontos. Ha az integral erteket
pontosıtani akarjuk, akkor tobbpontos kvadraturara van szuksegunk.
16 pontos Gauss kvadraturat hasznal a QGAUS2D1.FOR
32 pontos Gauss kvadraturat hasznal a QGAUS2D2.FOR
Integralas tobb (d) dimenzioban. Monte-Carlo integralas
Tobbszoros integralas altalanosıthato d > 2 esetre is, de a szukseges ido rohamosan
no a d dimenzio novekedesevel. A hiba becslese is egyre bonyolultabb. Ezert erdemes
lesz a sztochasztikus szimulaciot hasznalo u.n. Monte-Carlo modszert hasznalni. Ebben az
osztaspontokat veletlenszeruen valasztjuk. Ha az ri szamok a [0,1] intervallumon egyenletes
eloszlasu veletlen szamok, akkor az
I =
∫ 1
0
...
∫ 1
0
F (x1, x2, ..., xn)dx1 dx2... dxn
integral kozelıtese az F (r1, r2, ..., rn) fuggvenyertekekbol kepezett osszeg. Elonye meg, hogy
egyszeruen alkalmazhato tobbdimenzios komplikalt integracios tartomanyra is. Fel kell
venni azt a legkisebb V hiperteglalapot, ami a T = W integracios tartomanyt koruloleli.
Az integralast erre a V hiperteglalapra kell elvegezni, ugy, hogy a W -n kıvuli pontokat
nem adjuk hozza az osszeghez. Ez ekvivalens egy olyan f(xi) fuggveny definialasaval, ami
azonosan zerus, hacsak xi ∈ W nem teljesul, mikoris f(xi) = F (xi) all fenn. Az I integral
Monte-Carlo kozelıtesben N esemeny generalasa mellett:
I =
∫
V
f(x)dV = V < f > ± V√N
√
< f2 > − < f >2,
ahol dV = dx1...dxn, es
< f >=1
N
N∑
i=1
f(xi)
< f2 >=1
N
N∑
i=1
f(xi)2.
Mivel a hiba 1√N-nel aranyos, ajanlatos a V hiperteglalapot a leheto legkisebbre venni, mert
f zerus ertekei novelik a hibatagot, u.i. a W -n kıvuli pontoknak nincs informacio tartalma,
ezert az esemenyek hatasos Neff szama N-nel kisebb, es a hiba 1√Neff
-vel aranyos.
Veletlenszamok generalasi modszerei szamıtogeppel:
A szamıtogep nem kepes igazi veletlen szamokat generalni, csak ehhez kozelıto u.n. pseudo
veletlenszamokat. Igen fontos, hogy ezek eloszlasa a leheto legjobban kozelıtse az egyenletes
eloszlast.
Neumann Janos fele kozbenso-negyzet modszer: r-jegyu szam kozepso r/2 jegye
D.H. Lehmer szorzat-maradek modszer: Adva van egy a szorzo es egy m oszto (egeszek),
valamint egy ugyancsak egesz r0 kezdoertek. A tovabbi elemeket az ri = a × ri−1(mod m)
rekurzioval allıtjuk elo. Modosıtott formaja, ha van meg egy b konstans is, es a rekurzio
ri = (a × ri−1 + b)(mod m) alaku, ahol m = 2t t az integer szo bitjeinek szama. Szorzas 2 × t
jegyu, a hozzaadott b t jegyu, a kovetkezo veletlen szam az eredmeny kevesbe szignifikans
t jegye, amit m-mel valo osztassal alakıtunk [0,1] koze eso lebegopontos szamma.
Ahrens-Dieter modszer: ri = (a× ri−1 + b× ri−2)(mod m)
NAG Lib. SUBROUTINE G05CAF
m = 259 a = 1313 r0 = 123456789× (232 + 1)
Az eddigi modszerek kozos hatranya az, hogy korrelacio van az egymast koveto szamok
kozott.
Javıtas modja: eloszor generalunk egy szamsorozatot, majd ebbol valasztunk egy elemet
veletlenul, majd ennek a helyet feltoltjuk egy ujonnan generalt veletlen szammal. Igy
mukodik a RAN2 function.
FUNCTION RAN2(IDUM)
c
c [0,1] intervallumon egyenletes eloszlasu veletlen szamokat generalo rutin
c
PARAMETER (M=714025,IA=1366,IC=150889,RM=1.4005112E-6)
DIMENSION IR(97)
DATA IFF /0/
IF(IDUM.LT.0.OR.IFF.EQ.0)THEN
IFF=1
IDUM=MOD(IC-IDUM,M)
DO 11 J=1,97
IDUM=MOD(IA*IDUM+IC,M)
IR(J)=IDUM
11 CONTINUE
IDUM=MOD(IA*IDUM+IC,M)
IY=IDUM
ENDIF
J=1+(97*IY)/M
IF(J.GT.97.OR.J.LT.1)PAUSE
IY=IR(J)
RAN2=IY*RM
IDUM=MOD(IA*IDUM+IC,M)
IR(J)=IDUM
RETURN
END
A Monte-Carlo integralas sokdimenzios integralok kiszamıtasara gazdasagos.
Pelda Monte-Carlo integralasra: toruszdarab terfogatanak szamıtasa:
Hatarozzuk meg egy 4 egyseg kulso es 2 egyseg belso sugaru torusz es egy x ≥ 1, y ≥ −3
feltetelekkel adott doboz kozos reszet kepezo targy sulypontjat es tomeget. A torusz
belsejebe eso pontra teljesul, hogy
z2 + (√
x2 + y2 − 3)2 ≤ 1.
Tegyuk fel, hogy a targy ρ surusege allando. A feladat megoldasahoz a kovetkezo in-
tegralokat kell a test belsejere kiszamıtani:
M =
∫
W
ρdV, Mx =
∫
W
xρdV, My =
∫
W
yρdV, Mz =
∫
W
zρdV,
ahol dV = dx dy dz.
A sulypont koordinatai a fenti integralokkal:
xs =Mx
M, ys =
My
M, zs =
Mz
M.
A testet magabafoglalo V -vel jelolt teglatest:
x ∈ [1, 4], y ∈ [−3, 4], z ∈ [−1, 1], V = 3× 7× 2 = 42.
@COP MONTC.FOR
@F MONTC
R MONTC
adja meg az esemenyek szamat
100000
n= 100000
a test tomege= 22.1579 hiba= 0.0663
a sulypont x,y,z koordinatai:
x= 2.4076 hiba= 0.0079
y= 0.1629 hiba= 0.0080
z= 0.0002 hiba= 0.0022
FORTRAN STOP
Szimmetria okokbol a sulypont z koordinataja 0, s lathato, hogy a kozelıto ertek a
hibahataron belul ezt teljesıti.
Hazi feladatkent hatarozzuk meg Monte-Carlo modszerrel az egysegnyi sugaru felgomb
terfogatat.
@cop halfsphmc
@f halfsphmc
r halfsphmc
adja meg az esemenyek szamat
100000
n= 100000
a test tomege= 2.0982 hiba= 0.0063
a sulypont x,y,z koordinatai:
x= 0.0020 hiba= 0.0019
y= -0.0010 hiba= 0.0019
z= 0.3753 hiba= 0.0016
felgomb terfogata= 2.09440
FORTRAN STOP
egzakt erteekek: 2π3 = 2.09440, valamint xs = ys = 0. Lathato, hogy a kozelıto ertekek a
hibahatarokon belul egyeznek az egzakt ertekekkel.
Differencialegyenletek numerikus megoldasaDifferencialegyenletek osztalyozasa:
- kozonseges differencialegyenletek (egyvaltozos fuggvenyekre: y(x)),
- parcialis differencialegyenlet(tobbvaltozos fuggvenyekre(pl. u(x, y))
Eloszor a kozonseges differencialegyenletekkel foglalkozunk. Alapfeladatok kozonseges diffe-
rencialegyenletekre:
- Kezdetiertek-problema: a differencialegyenlet megoldasa (es a derivaltjai) adott(ak)
az x0 = a kezdopontban, meghatarozando bizonyos diszkret xi pontokban az egesz
xi ∈ [a, b] intervallumon.
- Peremertek-problema: a differencialegyenlet megoldasa adott az [a, b] intervallum a
kezdo es b vegpontjaban ( masodrendu, vagy magasabbrendu differencialegyenletekre).
Pl.
Ly(x) = y′′(x) + p(x)y′(x) + q(x)y(x) = 0,
ahol az y(a) = A es az y(b) = B peremertekek adottak, az y,(a) = α azonban ismeretlen.
A peremertek-problema visszavezetheto kezdetiertek-problemara.
- Sajatertek-problema: Ismeretlen parameter van a differencialegyenletben. Sajatertek:
azon parameter ertek, aminel a peremertek-problemanak van megoldasa. Ez a
megoldas a sajatfuggveny. Pl.
Ly − λy = 0,
ahol λ ismeretlen parameter. Az y(a) = A es az y(b) = B peremertekek adottak. Ez
is visszavezetheto a kezdetiertek-problemak, vagy matrix sajatertek problemajanak
megoldasara.
Kezdetiertek problemak numerikus megoldasi modszerei
A legtobb differencialegyenletbol kifejezhetok a derivaltak, es a differencialegyenlet felırhato
u.n. standard alakba, ami a kovetkezo: y′ = f(x,y), ahol y es f N-dimenzios vektorok.
A magasabb rendu differencialegyenletek visszavezethetok a standard alakra, azaz elsorendu
differencialegyenletek rendszerere.
Pl. az
y′′ + py′ + qy = 0
masodrendu differencialegyenlet eseten vezessuk be: az y1 = y ,es az y′1 = f1 = y2 =
y′ jeloleseket. Ezek felhasznalasaval y′2 = f2 = y′′ = −py2 − qy1, azaz a masodrendu
differencialegyenlet a standard alakot veszi fel N = 2-vel , ugyanis
y′ = (y′1, y′2)T = (f1, f2)
T ,
ahol f1 = y2 es f2 = −py2 − qy1, es a T a transzponaltat jeloli.
A numerikus megoldasi modszerek osztalyozasa:
A differencialegyenletek megoldasi modszereit szokas felosztani egylepeses es tobblepeses
modszerekre.
Vegyunk egyenlo, h = (b−a)/n lepeskozu beosztasat az [a, b] intervallumnak, azaz legyen
xi = a+ ih, i = 0, 1, ...n.
- tobblepeses modszerrol akkor beszelunk, ha az yi+1 kiszamıtasahoz egynel tobb
osztaspontbeli megoldast hasznalunk fel, azaz k > 0 mellett felhasznaljuk az yi,yi−1, ...,yi−k
ertekeket.
- egylepeses a modszer, ha k=0, tehat csak az yi erteket hasznaljuk fel.
Kozonseges differencialegyenletek megoldasa egylepeses kozelıto modszerrel:
az Euler modszer.
Tekintsuk az y′ = f(x,y) differencialegyenlet-rendszer x0 pontbeli kezdetiertek-problemajat,
ahol adottak az y(x0) = y0 es y′(x0) = f(x0,y0) kezdetiertek vektorok ertekei. Szamıtsuk ki a
differencialegyenlet megoldasat az x1 = x0+h pontban. A legdurvabb kozelıtes az elsorendu
u.n. Euler modszer, amiben az [x0, x1] intervallumban a keresett megoldast egyenesekkel
kozelıtjuk. Ha N = 1, azaz csak egyetlen elsorendu differencialegyenlettel van dolgunk,
akkor
y1 = y0 + hy′(x0) = y0 + hf(x0, y0)
vagy ezt atrendezve,y1 − y0h
=∆y0h
= y′(x0) = f(x0, y0).
Vagyis a differenciahanyadost az intervallum kezdopontjabeli derivalttal helyettesıtettuk.
Ez a kozelıtes nyilvanvaloan annal rosszabb, minel inkabb elter az y(x) megoldas az
x ∈ [x0, x1] intervallumban az egyenestol, vagyis, minel nagyobb a h lepeskoz. Az Euler
modszer tehat valodi egylepeses modszer, hiszen az y1 kiszamıtasahoz csak az x0 pontbeli
mennyisegeket y0-at es f(x0, y0)-at hasznalja fel.
Ha a modszert az x0 helyett az xi kezdopontbol indıtjuk, es tobb egyenletunk van
(N > 1), akkor az Euler modszer termeszetesen
yi+1 = yi + hf(xi,yi)
alaku lesz.
Pelda az Euler modsszer hasznalatara: N = 1 y′ = f(x, y) = x2 + y2 adottak:
x0 = 0.d0, y0 = 0.d0, b = 1.d0 es h = 0.1
@COP EULER.FOR
@COP EULER.DAT
@F EULER
R EULER
FORTRAN STOP
ED EULER.RES
*C
y(x=1)=0.29254 , ha h=0.1
y(x=1)=0.34402 , ha h=0.01
y(x=1)=0.34961 , ha h=0.001
y(x=1)=0.35040 , ha h=0.0001
Ahhoz, hogy az elsorendu Euler modszernel pontosabb eredmenyt szamıthassunk,
kozbenso pontokat kell felvennunk az [xi, xi+1] intervallumban. Jeloljuk ezeket a kozbenso
pontokat xj-vel. Vegyunk t darab kozbenso pontot, jeloljuk az ezekben a pontokban vett
kozelıto megoldasokat yj-vel es az itteni kozelıto derivaltakat kj-vel:
kj = f(xj , yj).
Termeszetesen j=1,..,t. Azyi+1 − yi
h=
∆yi
h
differenciahanyadost pontosabban kozelıthetjuk a kozelıto derivaltak sulyozott osszegevel,
ha az αj sulyokat megfeleloen valasztjuk:
yi+1 − yi
h=
t∑
j=1
αjf(xj , yj) ≡ g(xi,yi, h).
A most kovetkezo Runge-Kutta tipusu modszerek ugy hatarozzak meg az αj sulyokat,
valamint az xj yj ertekeket, hogy az adott t-hez tartozo modszer H hibavektora a h-ban
p-edrendu legyen:
H(xi, h) ≡ y(xi) + hg(xi,y(xi), h)− y(xi + h) = O(hp+1)1,
ahol 1 egy olyan N-dimenzios vektor, melynek minden komponense 1.
Runge-Kutta tipusu modszerek.
Valasszunk egyenlokozu beosztast az [x0, b] intervallumon:
xi = x0 + ih,
ahol i = 0, 1, ..., n. Oldjuk meg az y′ = f(x,y) differencialegyenlet-rendszer x0 pontbeli
kezdetiertek-problemajat, ahol adottak az y(x0) = y0 es y,(x0) = f(x0,y0) ertekei. A megoldas
meghatarozasat x0-bol kiindulva, h hosszusagu lepesenkent vegezzuk. Tegyuk fel, hogy
mar megtettunk k lepest es meghataroztuk az xk pontbeli yk kozelıto megoldast. Ekkor a
soronkovetkezo feladat, ennek felhasznalasaval kiszamıtani az xk+1 = xk + h pontbeli yk+1
kozelıto megoldast. Vegyunk fel ehhez t darab
xj = xk + µjh
kozbensopontot az [xk, xk+1] intervallumban, azaz az egyelore ismeretlen µj parameterekre
kossuk ki, hogy µj ∈ [0, 1]. Vezessunk be tovabbi ismeretlen λji parametereket, melyekkel
meghatarozzuk a kozbensopontbeli (kozelıto) megoldasokat es derivaltakat
yj = yk + h
t∑
i=1
λjiki
kj = f(xj , yj) = f(xk + µjh,yk + ht
∑
i=1
λjiki).
Ha a λji parametereket ugy valasztjuk meg, hogy i ≥ j eseten λji = 0 legyen, akkor a j-t
1-tol t-ig novelve, a
kj = f(xj ,yk + h
j−1∑
i=1
λjiki)
kifejezes mindig csak a mar kiszamıtott kj-ket fogja tartalmazni, tehat ebbol a k1,k2,...,kt
ertekeket egymasutan ki tudjuk szamıtani. A xk+1 pontbeli kozelıto megoldas ezek is-
mereteben a kovetkezokeppen szamıthato:
yk+1 = yk + h
t∑
j=1
αjkj .
Idohiany miatt itt nem foglalkozunk azzal, hogy milyen egyenletekbol lehet meghatarozni
a Runge-Kutta modszerekben szereplo parameterek ertekeit, csupan nehany fontosabb
specialis esettel foglalkozunk. A specialis eseteket a bennuk szereplo kozbenso pontok
szama: t, vagy a kozelıtes p rendje szerint csoportosıthatjuk.
Ha t = 1, akkor csak egyetlen pont van, ami az intervallum kezdopontja: x1 = xk,
λ11 = 0, ıgy µ1 = 0 es k1 = f(xk,yk) miatt, valamint α1 = 1 felhasznalasaval az Euler modszert
kapjuk vissza:
yk+1 = yk + hf(xk,yk).
Az Euler modszer elsorendu Runge-Kutta modszer (p = 1), melynek hibatagja O(h2) (tehat
h-ban masodrendu). Ez igen pontatlan modszer, ezert a gyakorlatban nem is celszeru
hasznalni.
Gyakorlatban hasznalatos modszer a negyedrendu (p = 4) Runge-Kutta modszer. Itt
t = 4 es a kozbensoponti kozelıto derivatakat a kovetkezokeppen szamıtjuk:
k1 = f(xk,yk)
k2 = f(xk +h
2,yk +
h
2k1)
k3 = f(xk +h
2,yk +
h
2k2)
k4 = f(xk + h,yk + hk3).
Ezek segıtsegevel az xk+1 pontbeli megoldas:
yk+1 = yk +h
6(k1 + 2k2 + 2k3 + k4).
A negyedrendu Runge-Kutta modszer hibatagja: O(h5) , tehat egzakt maximum negyedfoku
polinomra.
Alkalmazzuk a negyedrendu Runge-Kutta modszert az kovetkezo feladat megoldasara:
N = 1
y′ = 2 ∗√
1− y2 y(0) = sin(0.25) egzakt megoldasa a k.e.p.-nak: y = sin(2x+ 0.25)
@COP RK4.FOR
@COP RK4.DAT
@F RK4
R RK4
FORTRAN STOP
ED RK4.RES
*C
ED RK4.FOR
*C
Az f(x, y) jobboldalvektor komponenseit a SUBROUTINE DERIVS szamolja. Masik
feladatra ezt kell atırni.
Hazi feladat: oldjuk meg az y′ = x2 + y2 kezdetiertek-problema-t y(0) = 0-ra az RK4
felhasznalasaval.
a megoldas: RK41.FOR
ED RK41.res
*C
x approximate y(x)
0.000000000 0.000000000
0.100000000 0.000333335
0.200000000 0.002666875
0.300000000 0.009003498
0.400000000 0.021359447
0.500000000 0.041791288
0.600000000 0.072448125
0.700000000 0.115660305
0.800000000 0.174081004
0.900000000 0.250907869
1.000000000 0.350233742
A negyedrendu Runge-Kutta modszer alkalmazasa masodrendu differencialegyenlet-re:
y′′ = −y ∗K2, y(0) = 1 , y′(0) = 0 kezdetiertek-problema megoldasa:
Elso lepes a standard alakra hozas es az ennek megfelelo DERIVS subroutine elkeszıtese.
@COP RK24.FOR
c main program for calling rk4
c integration y”=-xk**2*y
c with y(0)=1 and y’(0)=0
c
c exact solution: y(x)=cos(xk*x)
implicit real*8 (a-h,o-z)
parameter (nmax=1000)
dimension yy(nmax),xx(nmax),f(nmax),dev(nmax),
1 y(2),yout(2),dydx(2)
common/par/xk
external derivs
open(unit=5,file=’rk24.dat’,status=’old’)
open(unit=6,file=’rk24.res’,status=’unknown’)
read(5,*) n,xmax,xk
c number of equations
nn=2
c converting second order diff. eqn into the system of first order diff.eqns
c y(1)=y(x), y(2)=y’(x)=dydx(1) y”(x)=dydx(2)=-xk**2*y(1)
c initial values: at x=0 y(1)=1 y(2)=0
c
c setting initial condition
x=0.d0
y(1)=1.d0
y(2)=0.d0
c
h=xmax/n
xx(1)=x
yy(1)=y(1)
c exact solution in x=h
f(1)=cos(xk*x)
c step by step integration from x=0 to x=xmax in step size h
do i=1,n
ip=i+1
c define k1 = f(x, y)
call derivs(x,y,dydx)
call rk4(y,dydx,nn,x,h,yout,derivs)
x=x+h
xx(ip)=x
c store approximate solution
yy(ip)=yout(1)
y(1)=yout(1)
y(2)=yout(2)
c store exact solution and deviation
f(ip)=cos(xk*x)
dev(ip)=abs((yy(ip)-f(ip))/f(ip))
enddo
write(6,100)
write(6,101)(xx(i),yy(i),f(i),dev(i),i=1,n+1)
100 format(7x,’x’,10x,’approximate y(x)’,3x,’exact y(x)’,4x,
1 ’relative error’)
101 format(1x,3f15.9,f19.16)
stop
end
subroutine derivs(x,y,dydx)
implicit real*8 (a-h,o-z)
dimension y(2),dydx(2)
common/par/xk
c y′i(x) = dydxi = fi(x, y1, y2)i = 1, 2
dydx(1)=y(2)
dydx(2)=-xk**2*y(1)
return
end
@COP RK24.DAT
TYPE RK24.DAT
10,1.8,2.d0
@F RK24
R RK24
TYPE RK24.RES
x approximate y(x) exact y(x) relative error
0.000000000 1.000000000 1.000000000 0.0000000000000000
0.180000000 0.935899840 0.935896824 0.0000032229215751
0.360000000 0.751846764 0.751805729 0.0000545821793318
0.540000000 0.471434530 0.471328364 0.0002252473826228
0.720000000 0.130606600 0.130423709 0.0014022840479742
0.900000000 -0.226951116 -0.227202095 0.0011046501167430
1.080000000 -0.555409741 -0.555699146 0.0005207944531408
1.260000000 -0.812671410 -0.812952037 0.0003451947985342
1.440000000 -0.965764864 -0.965979312 0.0002220007929906
1.620000000 -0.995071125 -0.995161903 0.0000912195880846
1.800000000 -0.896837674 -0.896758416 0.0000883827341111
A negyedrendu Runge-Kutta modszer javıto formulaja. Jelolje yh a h leoeskoz hsznalataval,
y2h pedig a 2h lepeskoz hasznalata mellett kapott kozeıto megoldast az x = xk pontban.
Kimutathato, hogy ugyanitt az
y =16
15yh −
1
16y2h
javıto formula jobb kozelıtese az y(xk) egzakt megoldasnak, mint az yh. Ezt a javıto formulat
tehat felhsznalhatjuk a h lepeskozzel kapott kozelıtes tovabbjavıtasara. Ezt azonban
ritkan alkalmazzuk. Inkabb hasznaljuk a javıtoformulabol szarmaztathato hibabecslest:
a h lepskozzel kapott yh kozelıtes hibaja eszerint δ = 115 (yh − y2h). Ennek segıtsegevel a h
integralasi lepeskozt beallithatjuk egy olyan ertekre, hogy a kozelıtes megadott pontossagu
legyen.
Automatikus lepeskoz-szabalyozas adott pontossagu kozelıteshez
Bar az automatikus lepeskoz-szabalyozast az elobbi hibabecsles segıtsegevel is elvegezhetnenk,
tekintsunk itt egy magasabbrendu kozelıtest. Otodrendu (p = 5), vagy beagyazott Runge-
Kutta formula:
Ez a kozelıtes hat kozbenso pontot hasznal (t = 6). Jeloljuk az ezekben a pontokban vett
kozelıto derivaltakat ki-vel (i = 1, ..., 6). Mivel ez a kozelıtes otodrendu, a modszer hibatagja:
O(h6), felteve, hogy megfelelokeppen (optimalisan) valasztjuk az αi sulyokat:
yk+1 = yk + h6
∑
i=1
αiki +O(h6).
Ha az optimalis αi sulyok helyett kevesbe optimalis α∗i sulyokat hasznalunk, akkor egy
kevesbe pontos, negyedrendu kozelıtest kapunk:
y∗k+1 = yk + h
6∑
i=1
α∗iki +O(h5).
A ket kozelıtes kulonbseget kepezve hibabecslest kaphatunk yk+1-re :
∆ = yk+1 − y∗k+1 =
6∑
i=1
ki(αi − α∗i ) = O(h5).
Itt termeszetesen az αi valamint az α∗i konstansok megadott ertekek. A hibabecsles lehetove
teszi, hogy adott pontossagu kozelıtest allıtsunk elo a h integralasi lepeskoz automatikus
szabalyozasaval. Ehhez kihasznaljuk, hogy a ∆h5 jo kozelıtessel h-tol fuggetlen allandonak
tekintheto. Tegyuk fel, hogy ǫ = 10−6 pontossagu kozelıto megoldast akarunk generalni.
Ekkor, ha egy h1 lepeskozzel szamolva a kapott hiba erteke ∆1, akkor az ǫ = ∆o hibat ho =
h1| ǫ∆1
| 15 lepeskozzel szamolva erhetjuk el. Ha tehat |∆1| > ǫ, akkor a szamolast ho lepeskozzel
meg kell ismetelnunk. Ellenkezo esetben nincs szukseg a szamolas megismetlesere, mert az
nem baj, ha a kozelıtesunk pontosabb a megkıvantnal.
A modszer alkalmazasara tekintsuk a korabbi peldat: y′′ = −y ∗K2, y(0) = 1, y′(0) = 0
@COP ADAPT2.FOR
@COP ADAPT2.DAT
@f ADAPT2
R ADAPT2
FORTRAN STOP
ED ADAPT2.RES
*C
x1 x2 approximate y(x) exact y(x)
0.000000000 1.800000000 -0.896758490 -0.896758416
Lathato, hogy a kozelıto megoldas valoban ǫ = 10−8 pontossaggal egyezik az egzakt
eredmennyel.
Az ADAPT2 programban a SUBROUTINE RKQS vegzi az automatikus lepeskoz beallıtast
a kivant eps pontossag eleresehez. A komponensek pontossagat YSCAL skalazza. RKQS-
nek meg kell adni aktualis parameterkent azt az egylepeses numerikus integralasi rutin
nevet, amit hasznalni akarunk. Jelen esetben ez az RKCK t=5 R-K modszer. Az x-ben
valo elorehaladast az intervallum vegpontjaig az ODEINT subroutine szervezi.
Az egylepeses modszerekhez sorolhatjuk meg az u.n. modosıtott kozbensoponti modszert
(MMID). Ennek lenyege az, hogy a H hosszusagu egyetlen lepest h = HM hosszusagu elemi
lepesekre bontjuk, s ıgy M+1 darab kozbensopontot vezetunk be. Ennek tovabbfejlesztese a
Bulirsch-Stoer modszer, ami Richardson extrapolaciot hasznal (mint a Romberg integralas).
A h=0-ra valo extrapolalast a SUBROUTINE RZEXTR vegzi racionalis extrapolacioval.
Ennek a modszernek a mukodeset az alabbi peldaprogram mutatja.
@COP BESTADAPT.FOR adatfile a mar atmasolt ADAPT2.DAT A feladat is ugyanaz,
mint az ADAPT2.FOR-ban specifikalt feladat, tehat
y′′(x) = −k2 ∗ y(x) , y(0) = 1, y′(0) = 0 egzakt m.o.: y = cos(kx)
A standard alak ismet: y1 = y y2 = y′ = y′1 = f1 y′2 = y′′ = −k2 ∗ y1 = f2,
ezert a DERIVS ugyanaz, mint korabban.
Foprogram: I/O fileok megnyitasa, beolvasas, kezdetiertekek megadasa:
ystart(1) = 1 ystart(2) = 0
A modosıtott kozbensoponti modszer:
A megoldas adott X-ben: Y(1:N), es keresett X+H-ban, amit majd YOUT(1:N)-ben
tarolunk.
A kozbenso pontok szama: NSTEP, s ezek egyenlokozzel vannak elhelyezve: h = H/NSTEP
lepeskozzel.
A kozelıto megoldasok a kozbenso pontokban a kovetkezoek:
z0 = y(X)
z1 = z0 + h ∗ f(X, z0)
z2 = z0 + 2h ∗ f(X + h, z1)
z3 = z1 + 2h ∗ f(X + 2h, z1)
..
zm+1 = zm−1 + 2h ∗ f(X +mh, zm), m = 1, ...n− 1
Az elso es az utolso ponttol eltekintve ez a kozbensoponti vagy centralis differencia modszer
a z(x) kozelıto megoldasra.
y(m)′ =zm+1 − zm−1
2h
Az elso es az utolso pontban azonban a szimmetria megtorik es nemileg modosul a keplet,
ez indokolja a modszer nevet. A pontos megoldas X + H pontban: y(X + H). A kozelıto
megoldas pedig ugyanitt:
y(n) = 0.5 ∗ [zn + zn−1 + h ∗ f(X +H, zn)]
A modosıtott kozbensoponti modszer masodrendu modszer, hibatagja O(h3) rendu, erteke:
y(n)− y(X +H) =∑∞i=1 αi ∗ h2i, tehat csak paros hatvanyokat tartalmaz
Javıto formulaja:
y = 4/3 ∗ yn − 1/3 ∗ yn/2,
ahol yn h, yn/2 pedig 2h lepeskozzel volt szamolva.
y(X +H) = yn +O(h5)
A Bulirsch-Stoer modszer hıvja a
SUBROUTINE MMID-et
NSTEP=2,4,6,8,12,14,24 beosztasokkal, mindaddig, mıg a Richardsson extrapolacioval h=0
-ra kapott ertek hibabecslese kisebb nem lesz a megkıvant ǫ (relatıv) pontossagnal.
A Richardsson extrapolaciot a
SUBROUTINE RZEXTR vegzi polinom helyett pn(x)/qm(x) racionalis tortkifejezessel.
A
SUBROUTINE BSSTEP(Y,DYDX,NV,X,HTRY,EPS,YSCAL,HDID,HNEXT,DERIVS)-be
valo belepeskor az Y tomb tartalma az X-beli megoldas, kilepeskor pedig az X+H pontbeli
megoldas.
A megoldas propagalasat x1-bol x2-be az ODEINT vegzi. Ez gondoskodik arrol is, hogy a
h lepeskoz ne legyen hmin-nel kisebb. Optimalizalja a szukseges szamolast H novelesevel ill.
csokkentesevel.
@F BESTADAPT
R BESTADAPT
FORTRAN STOP
ED ADAPT2.RES
*C
x1 x2 approximate y(x) exact y(x)
0.000000000 1.800000000 -0.896758414 -0.896758416
Linearis tobblepeses modszerek
Az egyszeruseg kedveert tekintsuk az x0 pontbeli kezdetiertek-problemat N = 1
esetben. Ennel
y′ = f(x, y),
ahol y(x0) = y0 adott. Vegyunk h lepeses egyenlokozu beosztast: xi = x0 + ih, ahol
i = 1, 2, ..,m. Lattuk, hogy egy k-lepeses modszer k darab fuggvenyerteket hasznal fel az yn+1
kiszamıtasahoz, ezek a kovetkezok: yn,yn−1,...,yn−k+1. Tehat a k lepeses modszer altalanos
alakja:
yn+1 +
k∑
i=1
αiyn+1−i = h
k∑
i=0
βifn+1−i,
ahol az αi es βi mennyisegek megadott sulyok az i = 0, 1, ..., k ertekekre. Itt bevezettuk az
ft = f(xt, yt) jelolest. Ha nem hasznalnank ezt a tomor jelolest, akkor jobban latszana, hogy
a jobboldalon allo kifejezes is tartalmazza a meghatarozando yn+1 mennyiseget, kiveve, ha
β0 = 0. Ha β0 = 0, akkor explicit egyenletunk van az ismeretlen yn+1 meghatarozasara, s
ezt az egyenletet extrapolacios formulanak nevezzuk. Ellenkezo esetben, tehat, ha β0 6= 0,
implicit egyenletunk van es ezt interpolacios formulanak nevezzuk.
Itt sem foglalkozunk azzal, hogy hogyan lehet adott rendu kozelıteshez meghatarozni
az αi, βi szamertekeit, hanem ezeket ismerteknek tekintjuk. Az Adams fele modszerek
azok, amik rogzıtett k mellett a legmagasabbrendu kozelıteseket szolgaltatjak. Ezert a
tovabbiakban csak ezekkel foglalkozunk. Kimutathato, hogy a k-adrendu Adams modszernel
az extrapolacios formula hibatagja O(hk+1) rendu, mıg a pontosabb interpolacios formula
hibaja O(hk+2) rendu. Peldakeppen felırjuk a k = 3 esetre vonatkozo Adams formulakat.
Kimutathato, hogy k = 3-ra az extrapolacios formula:
yn+1 = yn +h
12(23fn − 16fn−1 + 5fn−2) +O(h4).
Mıg az interpolacios formula:
yn+1 = yn +h
24(9fn+1 + 19fn − 5fn−1 + fn−2) +O(h5).
Lathato, hogy az interpolacios formula alkalmazasahoz ismerni kell egy kozelıto erteket
a meghatarozando mennyisegnek. Kezenfekvo, hogy ezt az extrapolacios formula fel-
hasznalasaval szamıtsuk ki. Ezt az eljarast prediktor-korrektor modszernek hıvjak . A
prediktor-korrektor modszer a kovetkezo harom lepesbol all:
1.) Az yn+1 meghatarozasa exrapolacios formulaval (prediktor lepes, jele: P)
2.) Az fn+1 = f(xn+1, yn+1) kiszamıtasa az elozo lepsben kapott yn+1 segıtsegevel (jele: E)
3.) Az yn+1 meghatarozasa interpolacios formulaval, az elozo lepesben meghatarozott fn+1
felhasznalasaval (korrektor lepes, jele: C).
Elvileg lehetseges az interpolacios modszer ismetelt felhasznalasaval pontosabb kozelıto
megoldast szamolni yn+1-re. Azaz a PECECEC.... iteraciot alkalmazni a korrektor lepes
implicit egyenletenek megoldasara. Ez azonban nem szokasos. A PEC lepesek elvegzese
utan tovabblepunk es az yn+2-t hatarozzuk meg. Ennek az az oka, hogy nincs sok ertelme
pontosabban meghatarozni egy amugy is csak kozelıto mennyiseget. A most kovetkezo pro-
gram a k = 1, ..4-es az Adams formulak hasznalatat mutatja az y′ = 2∗√
1− y2, y(0) = sin(0.25)
kezdetiertekproblemara. Mivel az inditashoz k kezdopontbeli fuggvenyertek szukseges, erre
felhasznaljuk , hogy ismerjuk az egzakt megoldast: y = sin(2 ∗ x+ 0.25)
@COP MULTISTEP.FOR
@COP MULTISTEP.DAT
@F MULTISTEP
R MULTISTEP
FORTRAN STOP
ED MULTISTEP.RES
*C
Feladat: Irjuk at a programot az y′′ = −y ∗ K ∗ ∗2 y(0) = 1, y′(0) = 0 masodrendu d.e.
megoldasara. egzakt megoldasa: y = cos(x ∗K)
megoldas: MULTI2.FOR adatfile: MULTI2.DAT
A kozelıto megoldas teljes hibaja.
Az eddigiekben csak egyetlen h lepes megtetelenel vizsgaltuk az elkovetett hibat a dif-
ferencialegyenlet numerikus integralasa soran . Ez a hiba alapvetoen az alkalmazott kozelıto
modszer p rendjetol, valamint a h lepeshossztol fuggott. Ezt a hibat keplethibanak nevezzuk,
es ez csak egy resze a megoldas teljes hibajanak. A kezdetiertek-problema megoldasanak
hibajat az is befolyasolja, hogy milyen hibat kovetunk el a kezdetiertek(ek) megadasanal az
x0 pontban. Ahogy tavolodunk a kezdoponttol a ketfele hiba tovaterjed es kiegeszul min-
den lepesnel az abban elvegzett aritmetikai muveletek kerekıtesi hibaival. Tehat, amikor
eljutunk a b vegpontba, az itt szamıtott megoldas hibajaban mindharom fajta hiba szer-
pet jatszik. A keplethiba annal kisebb, minel rovidebb a h lepeskoz. Ennek ellenere nem
valaszthatjuk h erteket nagyon kicsinek, mert akkor a kerekıtesi hibak fognak felnoni a
sok integracios lepes miatt, ami a b vegpont eleresehez szukseges. Altalanos javaslat, hogy
becsuljuk meg azt a minimalis pontossagot, amire a megoldas meghatarozasanal szuksegunk
van, es hasznaljuk az automatikus lepeskoz szabalyozasi lehetoseget.
Peremertek-feladatok megoldasa
A gyakorlatban leggyakrabban felmerulo peremertek-problemak linearisak, s ezeket
egyszeruen visszavezethetjuk kezdetiertek-problemak megoldasaira. Ennek modjat a kovetkezo
egyszeru peldan mutatjuk be.
Tekintsuk az L operatorral definialt
Ly(x) = y′′(x) + p(x)y′(x) + q(x)y(x) = r(x),
masodrendu, linearis, inhomogen differencialegyenletet, ami az y(a) = A es az y(b) =
B hatarfeltetelekkel peremertek-problemat hataroz meg. A peremertek-problema y(x)
megoldasat az alabbi ket kezdetiertek-problema megoldasanak linearkombinaciojakent allıtjuk
elo:
1 Az u(x) fuggveny jelolje az Lu = 0 homogen differencialegyenletmegoldasat u(a) = 0
es u′(a) = 1 kezdetiertekek mellett. Ez tehat egy kezdetiertek-problema, melynek
megoldasara szamos modszert ismertunk meg az elozoekben.
2 A z(x) fuggveny jelolje az Lz = r inhomogen differencialegyenlet megoldasat z(a) = A
es z′(a) = 0 kezdetiertekek mellett. Ez egy masik kezdetiertek-problema.
Konnyu belatni, hogy az
y(x) = c1u(x) + c2z(x)
linearkombinacio c1 = B−z(b)u(b) es c2 = 1 ertekek mellett a peremertek-problema megoldasat
szolgaltatja.
Nemlinearis differencialegyenlettel kapcsolatos peremertek-problema eseteben probal-
kozhatunk az u.n. beloveses modszerrel (shooting method). Noha ennek a modszernek a
konvergenciajara altalaban nincs garancia, ha azonban konvergal, akkor altalaban gyorsabb
a konkurens modszereknel. A beloveses moszer nevet arrol a technikarol kapta, amit regen
a tuzerek hasznaltak, amikor agyuval akartak egy tavoli celpontot eltalalni. Az agyu
vızszinteshez mert szogenak valtoztatasaval lottek be a celt, azaz kerestek olyan α1 es α2
szogeket, hogy az egyik szognel a lovedek a celpont elott, a masiknal a celpont mogott
csapodott be. Masodrendu differencialegyenletre vonatkozo peremertek-problema eseten
ennek az felel meg, hogy az a kezdopontban az y′(a) mennyisegre talalunk olyan α1 es α2
ertekeket, hogy az ezekkel indıtott kezdetiertek-problemak megoldasai x = b-ben kozrefogjak
a b pontbeli y(b) = B peremfeltetelt. Ekkor a peremertek-problema megoldasahoz tartozo
igazi y′(a) ertekre fennall, hogy
y′(a) ∈ [α1, α2]
Az igazi y′(a) ertek meghatarozasa ezutan a nemlinearis egyenletek megoldasara vonatkozo
modszerek (intervallum felezes, hurmodszer, stb) valamelyikevel tortenhet.
Veges differenciak modszere
Oldjuk meg az elozoekben vizsgalt peremertek feladatot a veges differenciak modszerevel!
Ekkor tehat az
y′′(x) + p(x)y′(x) + q(x)y(x) = r(x),
differencialegyenletet, kell megoldanunk az y(a) = A es az y(b) = B hatarfeltetelek mellett.
Ehhez vegyuk fel az [a, b] intervallumnak a h = b−an+1 (egyenlo) lepeskozu beosztasat, melyre
xi = a + ih valamennyi i = 0, 1, ..., n + 1 ertekre. Alkalmazzuk az yi = y(xi) jelolest, amivel
y0 = A es yn+1 = B fenn kell alljon. Az xk osztaspontokban a megoldas elso, illetve masodik
derivaltjait a kovetkezo veges differencia hanyadosokkal kozelıthetjuk:
y′(xk) =yk+1 − yk−1
2h+O(h),
valamint
y′′(xk) =yk+1 − 2yk + yk−1
h2+O(h2).
Jeloljuk az osztaspontokban a megfelelo fuggvenyertekeket: pk = p(xk), qk = q(xk) es
rk = r(xk)-val! Ezeket a differencialegyenletbe helyettesıtve a kovetkezo linearis egyenle-
trendszert kaphatjuk az ismeretlen y1, y2, ..., yn mennyisegekre:
yk+1(2 + hpk) + yk(2h2qk − 4) + yk−1(2− hpk) = 2h2rk
valamennyi k = 1, ..., n ertekre. Ennek a linearis egyenletrendszernek a megoldasa szolgaltatja
a peremertek-problema megoldasat. Megjegyezzuk, hogy ennek a linearis egyenletrend-
szernek a matrixa u.n. haromatlos matrix, melynel csak a foatloban es az alatta, illetve
felette elhelyezkedo mellekatlokban levo elemek kulonboznek nullatol. A modszert az alabbi
peldaprogrammal mutatjuk be.
Feladat: oldjuk meg az y′′ − y ∗ (1 + x2) = 1 diff. e. y(0) = 1 es y(1) = 0 ertekekkel adott
premertekfeladatat a veges differenciak modszerevel:
@COP PEREMERT.FOR
@COP PEREMERT.DAT
@f PEREMERT
R PEREMERT
FORTRAN STOP
A megoldas::
ED PEREMERT.RES
*C
1.0000 1.0746 1.1701 1.2877 1.4294
1.5976 1.7958 2.0285 2.3013 2.6219
3.0000
Sajatertek-problemak megoldasa veges differenciak modszerevel.
Tekintsuk az
y′′(x) + p(x)y′(x) + (q(x)− λ)y(x) = 0,
masodrendu differencialegyenletnek az y(a) = 0 es az y(b) = 0 hatarfeltetelekkel definialt
sajatertek-feladatat! Nyilvanvalo, hogy a differencialegyenlet megoldasa fugg az ismeretlen
λ parameter erteketol, tehat y = y(x, λ). A λ erteket ugy kell meghatarozni, hogy a
peremertek-problema kieleguljon. Jeloljuk λ parameternek ezeket az ertekeit, tehat a
sajatertekeket λn-nel. A λ = λn sajatertekek mellett kapott y(x, λn) megoldasok a problema
sajatfuggvenyei. Vegyuk az elozoekben hasznalt egyenlokozu beosztast es alkalmazzuk
a derivaltakra a veges differenciahanyadosokkal valo kozelıtest! Irjuk be ezt a differ-
encialegyenletbe , ekkor a kovetkezo linearis egyenletrendszert kapjuk:
yk+1(1
h2+pk2h
) + yk[(qk −2
h2)− λ] + yk−1(
1
h2− pk
2h) = 0
k = 1, ..., n-re. Ez ismet egy haromatlos matrixu, homogen, linearis egyenletrendszer az
y1, y2, ..., yn ismeretlenekre. A λ-tol fuggo tagot az egyenlet jobboldalara rendezve
Ay = λy
alaku egyenletrendszert kapunk, ami nem mas, mint az A matrix sajatertek-problemaja.
Ezzel a differencialegyenlet sajatertek-problemajat matrix sajatertek-problemajanak megolda-
sara vezettuk vissza, amire standard numerikus modszerek allnak rendelkezesre. Meg kell je-
gyezni, hogy a matrix sajatertek-problemajanak a megoldasa a differencialegyenlet sajatertek-
problemaja megoldasanak csupan kozelıtese, aminek pontossaga fugg peldaul a h beosztas
nagysagatol. (Hiszen a derivaltakat a h lepeskozhoz tartozo veges differenciak hanyadosaival
kozelıtettuk.) Bizonyos hatarig pontosıthatjuk a differencialegyenlet sajatertek-problema meg-
oldasat a h csokkentesevel, ennek ara azonban az, hogy egyre nagyobb meretu A matrix
sajatertek-problemajat kell megoldanunk. Bizonyos hataron tul azonban a modszer pon-
tossaga nem javıthato, mert a kerekıtesi hibak halmozodasa a kozelıtes romlasat okozza.
Sajatertek-problemak megoldasa iteracioval.
Egy masik modszer az elozo sajatertek-problemamegoldasara az, hogy valasztunk egy
a < xm < b illesztesi pontot, es megoldjuk a kovetkezo ket kezdetiertek-problemat:
1.) Kiszamıtunk egy baloldali megoldast az [a, xm] intervallumon, az yl(a, λ) = 0 es
y′l(a, λ) = 1 kezdeti feltetelekkel, majd
2.) kiszamıtunk egy jobboldali megoldast az [xm, b] intervallumon, az yr(b, λ) = 0 es
y′r(b, λ) = 1 kezdeti feltetelekkel.
Ezutan kepezzuk az u.n. logaritmikus derivaltak kulonbseget:
f(λ) =y′l(xm, λ)
yl(xm, λ)− y′r(xm, λ)
yr(xm, λ).
Az f(λ) nemlinearis fuggveny, es a λn sajatertekek f(λn) = 0 egyenlet gyokei. Ugyanis
ezek mellett mindket megoldas az y(x, λn) sajatfuggvennyel aranyos, ıgy logaritmikus
derivaltjaik egyenloek. Tegyuk fel, hogy tudunk olyan λ(0) erteket adni, mely kozelebe esik
valamelyik λn sajaterteknek. Ekkor a λ(0) kezdoertekkel elindıtott Newton iteracio altalaban
a λn sajatertekhez fog konvergalni. Termeszetesen az f(λ) = 0 egyenlet gyokeit mas, a
nemlinearis egyenlet megoldasara vonatkozo numerikus modszerrel is megkereshetjuk. A
sajatertek meghatarozasa utan a sajatfuggvenyt ugy kaphatjuk meg, hogy a jobboldali
megoldast az xm illesztesi pontban csatlakoztatjuk a baloldali megoldashoz, majd ha
szukseges, akkor az ıgy kapott folytonos fuggvenyt 1-re normaljuk.
Matrixok sajatertekproblemaja
Matrixokrol altalaban:
transzponalas, negyzetes matrixok:
egyseg, diagonalis, tridiagonalis, kontinuans matrixok
felso haromszog es Hessenberg matrixok
also ” ” ”
Szimmetrikus, onadjungalt, ortogonalis, uniter, normalis matrixok
Valos elemu matrixokra
Hermitikus=szimmetrikus
ortogonalis=uniter=normalis
Matrixok sajatertek feladatanak numerikus megoldasa
jobbodali es baloldali sajatvektorok
Szimmetrikus A matrix eseten baloldali sajatvektor a jobboldali transzponaltja
Csak jobboldali (oszlop) sajatvektorokkal foglalkozunk.
Ax = y trafo a sajatvektorok iranyat valtozatlanul hagyja.
Ax = λx(A− λE)x = 0Det(A− λE) = 0φ(λ) = 0
Karakterisztikus polinom (n-edfoku). maximum n db. kulonbozo gyoke lehet a karakter-
isztikus egyenletnek.
Ha A diagonalis vagy U , vagy L, akkor determinansa lenyegeben a foatlobeli elemeinek
szorzata, tehat a sajatertekek a foatlobeli elemek. Sajatfuggvenyek, ha a sajatertekek
kulonbozoek (nem degeneralt eset), akkor az ei egysegvektorok.
Ha T regularis (Det(T ) 6= 0), akkor B = T × A × T−1 hasonlosagi trafo valtozatlanul hagyja
A sajatertekeit. Ha xi A sajatvektora, akkor B-nek ugyanahhoz a sajatertekhez tartozo
sajatvektora: T × xi Tehat, ha sikerul az A matrixot hasonlosagi trafoval diagonalizalni,
akkor megkapjuk a sajatertekeket a foatloban, es a sajatvektor is rekonstrualhato a
hasonlosagi trafobol. A hasonlosagi trafo oszlopvektorai a sajatvektorok.
Valos, szimmetrikus matrixra a sajatvektorok valosak es ortogonalisak, ıgy a hasonlosagi
trafo is ortogonalis trafo.
A = ZT .A.Z
Valos, nem szimmetrikus matrixok is diagonalizalhatok a sajatvektorokbol osszeallo matrixal,
de a sajatvektorok altalaban komplexek. Valos hasonlosagi trafoval kvazi-diagonalissa
tehetok (2 × 2-es al-matrixoktol eltekintve). A numerikus megoldasnal az A matrixot
P1, P2, ... hasonlosagi trafok sorozataval a diagonalis alak fele lokdossuk. Ha ez sikeres,
akkor XR = P1.P2.P3... a sajatvektorokbol alkotott matrix lesz.
Numerikus modszerek fajtai:
I./ Kikuszobolesi modszerek: (Jacobi, Gauss, Householder) egylepesben kinullaznak egy,
vagy tobb elemet, es ezeket a lepeseket iteraljuk.
II./ Faktorizacios modszerek: kozos, hogy A = FL.FR szorzatra bontjuk, s FR.F=F−1L .A.FL
hasonlosagi trafot kapunk. Ide tartozik a QR es a QL modszer.
I modszerrel jo kezdeti allapotot allıtunk elo, majd folytatjuk a
II modszerrel, ami ekkor gyorsabban konvergal.
Householder modszer (szimmetrikus matrixokra) n− 2 db ortogonalis trafoval tridiagonalis
alakra hoz.
Ezt valosıtja meg a
SUBROUTINE TRED2(A,N,NP,D,E) rutin
A diagonalizalni kivant matrixot az A N ×N-es tombbe helyezzuk,
N <= NP
Az eredmeny: foatlobeli elemek a D(NP) valos vektorba, D(1),...,D(N) lesznek eltarolva, a
foatlo alatti elemek E(2),...,E(N)-ben, E(1)=0 mindig. Az A tomb felulırodik.
A kapott tridiagonalis matrix sajatertekeinek ( es esetleg sajat vektorainak) a meghatarozasa:
felırjuk a φ(λ) karakterisztikus polinomot, majd a φ(x) = 0 egyenlet gyokeit intervallum-
felezessel, vagy NR modszerrel meghatarozzuk. A hozzajuk tartozo sajatvektorokat in-
verziteracioval hatarozhatjuk meg.
Ha nincs szukseg valamennyi sajatertekre es vektorra, akkor hatekonyabb egy faktorizacios
eljaras alkalmazasa.
A QR es a QL algoritmus
Barmely valos A matrix felırhato
A = Q.R alakba, ahol Q ortogonalis matrix, R pedig felso haromszog matrix. Irjuk most oket
fordıtott sorrendben, azaz szamıtsuk ki az A′ = R.Q matrixot. Mivel Q ortogonalis, ezert
Q−1 = QT , s ıgy QT .A = Q−1.Q.R = R, tehat A′ = QT .A.Q A-nak ortogonalis transzformaltja.
Bizonyıthato, hogy a QR trafo megorzi az A matrix szimmetriajat, tehat tridiagonalitasat
es Hessenberg alakjat (ha volt neki). Hasonlokeppen kimutathato, hogy barmely A matrix
felırhato A = Q.L alakba is, ahol L also haromszogmatrix es Q ortogonalis matrix. A
tovabbiakban a QL algoritmussal foglalkozunk, ami ortogonalis trafok alabbi sorozata: az
s-edik lepesben:
As = Qs.Ls a trafo:
As+1 = Ls.Qs = QTs .As.Qs
Ha s vegtelenhez tart, akkor As also haromszogmatrixhoz tart, ha A sajatertekei nem
degeneraltak. Ellenkezo esetben, ha λip > 1 multiplicitasu, akkor As egy p-edrendu matrixtol
(melynek sajatertekei a λi) eltekintve tart also haromszogmatrixhoz.
Muveletıgeny: O(n3) iteracionkent altalanos matrixra, Hesenberg alakra O(n2), tridiagonalis
matrixra O(n) iteracionkent. Alabb a kerekıtesi hiba szempontjabol elonyosebb u.n. implicit
eltolasos QL algoritmust alkalmazo szubrutint adjuk:
SUBROUTINE TQLI(D,E,N,NP,Z)
Bemeno parameterek: D(NP),E(NP) , ami a tridiagonalis matrix diagonalis es foatlo alatti
elemeit tartalmazo vektorok. N×N -es eredeti A matrix eseten D(1),..,D(N) es E(2),...,E(N)
van feltoltve. Ez az eredmenye a TRED2 szubrutinnak. Z egy NP ×NP meretu valos tomb,
amit egysegmatrix-szal kell feltolteni, ha a sajatvektorokat is meg akarjuk hatarozni. Mivel
TRED2 az A matrixot ıgy tolti fel, celszeru ezt megadni TQLI-ben Z-nek.
@COP SYMSAJ.FOR ld. Szidarovszki 7.9 288 oldal
@COP SYMSAJ.DAT mivel A szimmetrikus, ezert eleg az also haromszoget megadni, tehat
@F SYMSAJ 1 1 0.5
R SYMSAJ A= 1 1 0.25
FORTRAN STOP 0.5 0.25 2
eseten 1,1,1,0.5,0.25,2 -t
ED SYMSAJ.DAT
3,1
1.d0,1.d0,1.d0,0.5d0,0.25d0,2.d0,
ED SYMSAJ.RES
eigenvalue= -0.0166472836
eigenvector:
0.72 -0.69 -0.09
eigenvalue= 1.4801214232
eigenvector:
-0.44 -0.56 0.70
eigenvalue= 2.5365258604
eigenvector:
0.53 0.46 0.71
Nemszimmetrikus valos matrixok sajatertekeinek meghatarozasa 3 lepesben: 1./
eloszor celszeru kiegyensulyozni az A matrixot, hogy sorainak es oszlopainak normaja
kozelıtoleg azonos legyen, 2./ ezutan Hessenberg alakra hozzuk (felso Hessenberg alak: also
mellekatlo alatt valamennyi elem zerus) 3./ vegul alkalmazzuk a QR algoritmust a valos
Hessenberg matrixra.
bovebben: 1./ Hasonlosagi transzformacioval vegezzuk a SUBROUTINE BALANC(A,N,NP)
segıtsegevel. Parameterek: A(NP,NP) valos tomb, bemenetkor az egyensulyozando, kimenetkor
a kiegyensulyozott A matrixot tartalmazza. N az A matrix aktualis merete, NP az
A maximalis merete. 2./ A Hessenberg alakra hozast vagy foelemkivalasztasos Gauss
modszerrel vagy Householder redukciokkal erhetjuk el. Mivel a Gauss eliminacio nem ha-
sonlosagi trafoja az A matrixnak, ezert azt kicsit modosıtani kell. Az r-edik lepes elott az
eredeti A = A1 matrix Ar matrixa valtozott, es ez egy felso Hessenberg matrix az elso r − 1
soraban es oszlopaban. Az r-edik lepes a kovetkezo muveleteket tartalmazza: a./ megker-
essuk az r-edik oszlopnak a foatlo alatti maximalis abszoluterteku elemet. Ha ez zerus, akkor
atugorjuk a tovabbi ket lepest. Egyebkent jeloljuk ezen elem sorat r′-vel. b./ Felcsereljuk
az r′-edik sort az r + 1-edikkel. (Ez a foelemkivalasztas). Azert, hogy hasonlosagi trafo
legyen az r′ oszlopot is felcsereljuk az r + 1-edikkel. c./ i = r + 2, r + 3, ..., N-re kiszamıtjuk
az ni,r+1 = ai,r/ar+1,r szorzofaktort es ezzel megszorozva az r+1-edik sort, azt kivonjuk az i-
edik sorbol. Azert, hogy hasonlosagi trafo legyen az i-edik oszlop ni,r+1 szereset hozzaadjuk
az r + 1-edik oszlophoz. Az alabbi rutin ezeket a lepeseket tartalmazza es mivel csak a
sajatertekeket hatarozza meg, nem koveti nyomon a hasonlosagi trafok sorrendjet. SUB-
ROUTINE ELMHES(A,N,NP) parameterek: mint korabban, az A tomb bemenetkor a mar
feltehetoleg kiegyensulyozott nem szimmetrikus valos matrixot, kimenetkor pedig annak
felso Hessenberg alakjat tartalmazza, tehat az A(i, j) matrix i > j + 1 elemei gyakorlatilag
0-nak tekinthetok. A legkisebb lebegopontos szam nagysagrendjebe eso veletlen szamok.
3./ A QR algoritmust az elozoekben kapott felso Hessenberg alaku valos A matrixra a SUB-
ROUTINE HQR(A,N,NP,WR,WI) rutine-nal vegezhetjuk. Itt az elso harom parameter
ugyanaz, mint korabban, a WR(1),...,WR(N) valos vektor elemei kimeneten a komplex
sajatertekek valos reszet, a WI(1),..,WI(N) elemek pedig a sajatertekek kepzetes reszeit
tartalmazzak. Az ıgy kapott sajatertekek pontossaga tovabb novelheto, es a sajatvektorok
is meghatarozhatok inverz iteracioval.
Pelda: Hatarozzuk meg a kovetkezo
1.5 0.1 4.5 − 1.5
−22.5 3.5 12.5 − 2.5
−2.5 0.3 4.5 − 2.5
−2.5 0.1 4.5 2.5
nemszimmetrikus valos matrix sajatertekeit. Ezt a feladatot a fent vazolt modszerrel oldjuk
meg.
@COP NONSY.FOR
@COP NONSY.DAT
@F NONSY
R NONSY
FORTRAN STOP
ED NONSY.RES
*C
sajatertek: 3.0000 +i* -4.0000
sajatertek: 3.0000 +i* 4.0000
sajatertek: 2.0000 +i* 0.0000
sajatertek: 4.0000 +i* 0.0000
Lathato, hogy az utolso ket sajatertek valos, mıg az elso ketto komplex es konjugaltjai
egymasnak.
A sajatertekek finomıtasa es a sajatvektorok kiszamıtasa inverz iteracioval totrtenhet.
A megoldando sajatertekproblema: (A− λ.E).x = 0
Az inverz iteracio k-adik lepeseben a kovetkezo egyenletet kell megoldanunk:
(A− τk.E).y = bk Itt a τk a k-adik lepesbeli kozelıtese az egyik sajaterteknek, bk pedig egyre
csokkeno elemekkel rendelkezo maradekvektor (ez tart zerushoz, ha a pontos mego Miutan
az inhomogen linearis egyenletrendszert az y vektor komponenseire megoldottuk, a k + 1-
edik kozelıteset az x sajatvektornak 1-re normalassal kapjuk: y/|y|. A sajatertek kozelıteset
pedig τk+1 = τk+1/(bk.y) szolgaltatja. Lenyeges, hogy a kiindulo sajatertekunk eleg jo legyen,
maskulonben a modszer tul lassan, vagy egyaltalan nem konvergal.
Irodalom
Szidarovszky Ferenc, Bevezetes a numerikus modszerekbe, Kozgazdasagi es Jogi Konyvkiado,
Budapest, 1974
William H. Press, Saul A. Teukolsky, William T. Vettering, Brian P Flannery, Numerical
Recipes in FORTRAN, University Press, Cambridge, 1992. ldast kozelıtjuk), melynek
elemei szinten ismertek.