擅长:python、mysql、java
<p>您没有在任何地方使用<code>rkx</code>,<code>rky</code>函数!
在函数定义的末尾有两个<code>return</code>应该使用
<code>return [(kx1 + 2*kx2 + 2*kx3 + kx4)/6, (mx1 + 2*mx2 + 2*mx3 + mx4)/6]</code>(如@eapetcho所指出)。另外,你对Runge Kutta的实现我也不清楚。在</p>
<p>你有<code>dv/dt</code>,所以你求解<code>v</code>,然后相应地更新<code>r</code>。
在</p>
<pre><code>for n in range(1,len(t)): #solve using RK4 functions
vx[n] = vx[n-1] + rkx(vx[n-1],vy[n-1],t[n-1])*dt
vy[n] = vy[n-1] + rky(vx[n-1],vy[n-1],t[n-1])*dt
x[n] = x[n-1] + vx[n-1]*dt
y[n] = y[n-1] + vy[n-1]*dt
</code></pre>
<p>这是我的代码版本
在</p>
^{pr2}$
<blockquote>
<p>I suspect there are issues with fx(x,y,t) and fy(x,y,t)</p>
</blockquote>
<p>在这种情况下,我刚刚检查了<code>fx=3</code>和{<cd9>}的代码,得到了一个很好的轨迹。在</p>
<p>这是<code>ry</code>与<code>rx</code>图:</p>
<p><a href="https://i.stack.imgur.com/hY7aA.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/hY7aA.png" alt="fx=3, fy=y trajectory"/></a></p>