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)

我只是收到一个NoConvergence错误

我确定我正在做一些愚蠢的事情。是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)