【发布时间】:2019-03-06 00:50:19
【问题描述】:
我遇到了这个问题,我是这种 Python 用法的新手,希望有人能帮助我解决这个问题。
我有一个使用 RungeKutta 算法的代码。
正如我 print(vH) 所做的那样,它会打印:
[70, 98.72259439054349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
当我写print(vH) 时,我怎么能在输出98.72259439054349?
这是代码的 RungeKutta 部分和nrk=300。使用nrk,我们得到了准确的输出,但正如你所见,使用这段代码,我们在输出中有300 零。
def rk4(dH_func, H0, A, B, alpha, b, rho_de0, rho_dm0, z0, z1, nrk):
if dH_func != False and drho_dm_func != False and drho_de_func != False :
vH = [0] * (nrk + 1)
h = (z1 - z0) / float(nrk)
vH[0] = H = H0
for i in range(1, nrk + 1):
k1_H = h * dH_func(z, H, rho_de, rho_dm)
k2_H = h * dH_func(z + 0.5 * h, H + 0.5 * k1_H, rho_de + 0.5 * k1_rho_de, rho_dm + 0.5 * k1_rho_dm)
k3_H = h * dH_func(z + 0.5 * h, H + 0.5 * k2_H, rho_de + 0.5 * k2_rho_de, rho_dm + 0.5 * k2_rho_dm)
k4_H = h * dH_func(z + h, H + k3_H, rho_de + k2_rho_de, rho_dm + k2_rho_dm)
vH[i] = H = H + (k1_H + k2_H + k2_H + k3_H + k3_H + k4_H) / 6
return vH
【问题讨论】:
-
print(vH[1])这样 -
你
return在for循环中。 -
@WillemVanOnsem 一旦我想将
return带出循环,Python 不接受 -
@Ehsan:你得到了什么错误?也许你混合了制表符和空格,因为这是完全有效的。
标签: python arrays arraylist output runge-kutta