.5 および .1 のステップ サイズの diffeq クラスに対してオイラーの近似法を実行するコードを作成する必要があります。.5 の場合、コードは正常に実行され、近似値が提供されます。ただし、ほとんどが .5 未満の場合は、次のようになります。
RuntimeError: maximum recursion depth exceeded in cmp
そして、再帰の深さを増やそうとすると、最終的にはSegmentation fault: 11
.
これがコードです。再帰エラーが発生する理由、または再帰が少なくなるようにコードを改善する方法を理解するのを手伝ってください。
import sys
from pylab import *
h=.4
t=0
dep=[]
ind=[]
def sqr(q):
return q*q
def d(x,t):
return x+sqr(t)-2
while t<=3:
def x(t):
if t==0:
return 1
else:
return x(t-h)+h*d(x(t-h),t)
dep.append(x(t))
ind.append(t)
t+=h
plot(ind,dep,'o')
t=arange(0,3,.01)
x=exp(t)-t*(t+2)
plot(t,x,)
title("Euler's Method for dx/dt=x+t^2-2")
xlabel('t')
ylabel('x')
show()