我目前正在尝试使龙格库塔4集成工作,但它输出以下内容:
Runge Kutta value: inf
虽然它应该给出一个在以下范围内的值:
^{pr2}$我使用了以下代码,但似乎无法输出正确的近似值。在
endtime = 5
h = 0.01
def f(x, z):
return x*x*z
t = 0
y = 1
while t < endtime:
k1 = f(t, y)
k2 = f(t+(h/2), y+(k1/2))
k3 = f(t+(h/2), y+(k2/2))
k4 = f(t+h, y+k3)
y = y + h*(k1 + 2*k2 + 2*k3 + k4)/6
t = t + h
print("Runge Kutta value: " + str(y))
有人知道我在哪里犯的错误吗
你的公式是错误的,因为大多数时候你忘记了乘以
h
以及系数:
(来源:Wikipedia)
所以:
还可以通过每次计算
t
的值来避免浮点累积,而不是添加固定步长,并用while
循环交换for
循环。在不确定是否完美,但我现在得到了一个有限的结果:)
^{pr2}$相关问题 更多 >
编程相关推荐