微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scipy:使用broyden1解决微分方程问题

如何解决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 举报,一经查实,本站将立刻删除。