one-file-projects/heun.py
2015-05-23 23:44:26 +02:00

23 lines
545 B
Python

# 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])