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