如何解决scipy:使用broyden1解决微分方程问题
我在使用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 举报,一经查实,本站将立刻删除。