Я написал код для решения ode
с использованием метода rk4
.
Вот код:
from __future__ import division
import math
import numpy as np
from math import exp
def f(t,y):
return 5*t**2-y/math.e**(t+y)
def rk4(t,y,h,i):
p=[0]*i
p[0] = y
for n in range(0,i):
g=11
k1=round(h*f((t+n*h),y),g)
k2=round(h*f((t+n*h)+(h/2),y+k1/2),g)
k3=round(h*f((t+n*h)+h/2,y+k2/2),g)
k4=round(h*f((t+n*h)+h,y+k3),g)
p[n+1]=p[n]+(1/6)*(k1+2*k2+2*k3+k4)
print(k1,k2,k3,k4)
a=rk4(0,1,0.1,3)
print(a)
Когда я пытаюсь вывести коэффициент k, он показывает индекс назначения списка изошибки диапазона, и когда я пытаюсь напечатать значение p, выводится
[1, 0.9666652135433333, 0]
Я не понимаю, почему третий элемент равен 0.
Как мне решить эти проблемы?