我正在尝试应用Runge Kutta方法来解决ODE问题。问题是,python某个地方像疯子一样四舍五入,我不明白为什么或者是什么语法告诉python来绕过一切?我尝试将所有内容转换为import numpy as np
def fn(x,y):
return x-y
def rk3 (y0,x):
n = len (x)
y = np.array([y0]*n)
for j in range(n-1):
h = x[j+1]-x[j]
k1 = h * fn(x[j],y[j])
k2 = h * fn(x[j] + h / 3.0, y[j] + k1 / 3.0)
k3 = h * fn(x[j] + 2.0*h /3.0, y[j] + 2.0*k2 /3.0)
y[j+1] = y[j] + k1*1.0/4.0 + k3 *3.0/4.0
return y
v = rk3(1, np.linspace(0,5,500))
无效。我应该怎么做让python计算满足一定精度要求的一切?
{{1}}
答案 0 :(得分:0)
错误是在rk3(1,np.linspace(0,5,500))
中传递一个整数。如果更改为1.0
,则根据需要将所有其他操作视为浮点运算。