擅长:python、mysql、java
<p>你的实现有几个问题</p>
<ol>
<li>在步骤<code>0</code>中,您试图访问不存在的索引<code>-1</code>,最后一个索引的索引<code>i+1</code>也不存在。</li>
<li>加速度只在第一步定义,其他步骤不定义。</li>
<li>下一个位置的计算有符号错误。</li>
</ol>
<p>像这样的事情应该可以解决</p>
<pre><code>import numpy as np
N = 1000
dt = 0.1
x = np.zeros(N)
v = np.zeros(N)
t = np.arange(0,(N+0.5)*dt, dt)
a = np.ones(N)*1.0 # initial condition
x[[0,1]] = 1
v[1] = v[0]+a[0]*dt
for i in range (1,N-1):
x[i+1] = x[i]+v[i]*dt+(a[i]*(dt**2)*0.5)
v[i+1] = v[i] + a[i]*dt
</code></pre>
<p>不过,这并不是非常有效,最好使用<code>scipy.integrate.ode</code>来求解基本的运动微分方程。</p>