3
私はPythonを初めて使用しましたが、C++とMATLABの経験があります。 私は現在、dy/dtとdx/dtを含む非線形システムの位相空間内の軌跡をプロットするプログラムを作成しています。しかし、より複雑な関数形式の場合、私はオーバーフローエラーを受け取りました。この問題を回避する方法はありますか?前もって感謝します!位相空間内の軌跡 - オーバーフローエラー:(34、 '結果が大きすぎます')
これらは私のコードです:
fig = plt.figure(figsize=(18,6))
dt = 0.01
def trajectories():
#initial conditions
x = y = 0.1
xresult = [x]
yresult = [y]
for t in xrange(10000):
# functional form: dx/dt = y, dy/dt = -r(x**2-1)*y-x
nextx = x + (r*x-y+x*y**2) * dt
nexty = y + (x + r*y + y**3) * dt
x, y = nextx, nexty
xresult.append(x)
yresult.append(y)
plt.plot(xresult, yresult)
plt.axis('image')
plt.axis([-3, 3, -3, 3])
plt.title('r = ' + str(r))
rs = [-1, -0.1, 0, .1, 1]
for i in range(len(rs)):
fig.add_subplot(1, len(rs), i + 1)
r = rs[i]
trajectories()
plt.show()
EDIT: this is the full traceback
Traceback (most recent call last):
File "/Users/Griffin/Atom/NumInt.py", line 33, in <module>
trajectories()
File "/Users/Griffin/Atom/NumInt.py", line 18, in trajectories
nextx = x + (r*x-y+x*y**2) * dt
OverflowError: (34, 'Result too large')
フルトレースバック – roganjosh
を投稿してくださいだけで、完全なトレースバックを追加しました。ありがとう! – griffinleow
あなたの郵便番号は私のためにうまく動作します。あなたのデータの小数精度を考えています....あなたのdtは0.01に固定されていますか?低い値の場合はどうなりますか? – eduardosufan