问题描述
我在使用scipy的broyden1求解微分方程时遇到麻烦-它永远不会收敛。
我要解决的具体问题是Miranda和Fackler(应用计算经济学和金融学)的练习6.4:
使用搭配选择的基函数,对[0,1] $中的$ x \求解以下微分方程:
$(1 + x ^ 2)v(x)-v''(x)= x ^ 2 $
$ v(0)= v(1)= 0 $
这是我的代码:
import numpy as np
import scipy as sp
from scipy.optimize import broyden1
class DiffEqn:
def __init__(self,xgrid):
self.xgrid = xgrid
def __call__(self,coef):
v = np.polynomial.chebyshev.Chebyshev(coef,domain=[0,1])
resid = ((1.0 + (self.xgrid ** 2)) * v(self.xgrid)) - v.deriv(2)(self.xgrid) - (self.xgrid ** 2)
resid = np.append(resid,[v(0.0),v(1.0)])
return resid
n = 25
x = np.polynomial.chebyshev.chebpts1(n)
coef = np.full((n+2,),0.4)
diffEqn = DiffEqn(x)
coef = broyden1(diffEqn,coef,verbose = True)
我确定我正在做一些愚蠢的事情。是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)