Verfahren von Heun
This commit is contained in:
parent
e5cdab5114
commit
aecbba2bcf
1 changed files with 22 additions and 0 deletions
22
heun.py
Normal file
22
heun.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Verfahren von Heun zur numerischen Lösung von Anfangswertaufgaben.
|
||||||
|
|
||||||
|
def heun(xk,yk,h,ys):
|
||||||
|
xk1 = xk + h
|
||||||
|
yk1p = yk + h * ys(xk,yk)
|
||||||
|
yk1 = 0.5*(yk+yk1p+h*ys(xk1,yk1p))
|
||||||
|
return (xk1,yk1p)
|
||||||
|
|
||||||
|
def run_heun(K,h,x0,y0,ys):
|
||||||
|
if not isinstance(ys,list): ys = [ys]
|
||||||
|
if not isinstance(y0,list): y0 = [y0]
|
||||||
|
xk = x0
|
||||||
|
yk = y0
|
||||||
|
xks = x0
|
||||||
|
yks = [ [v] for v in y0 ]
|
||||||
|
|
||||||
|
for i in range(K):
|
||||||
|
for j in range(len(ys)):
|
||||||
|
xk,yk[j] = heun(xk,yk[j],h,ys[i])
|
||||||
|
xks.append(xk)
|
||||||
|
yks[j].append(yk[j])
|
||||||
|
|
Loading…
Reference in a new issue