利用python的IDESolver包求解积分-微分方程示例

参考资料来源:

(1)https://idesolver.readthedocs.io/en/latest/quickstart.html

(2)https://idesolver.readthedocs.io/en/latest/manual.html

一、IDESolver包模块安装

为应用IDESolver包计算积分-微分方程的解,需要在python环境安装IDESolver包模块,安装命令为(pip install idesolver)。

二、待求解的积分-微分方程

假设需要求解以下积分-微分方程(IDE)

\frac{dy}{dx}=\frac{1}{4}{ \int_{0}^{2} \frac{x}{s+1}y(s)ds } + y(x)-\frac{x^2}{2}+\frac{10}{1-x}-\ln{(x^2+1)}

x\in{[0,2]}, y(0)=0

三、编写python代码求解IDE

利用IDESolver函数计算其数值解,首先建立IDESolver样本,并将关于待求解的IDE的相关信息传递给该样本进行刻画,样本的格式如下所示

\frac{dy}{dx} = c(y,x) + d(x) \int_{p(x)}^{q(x)}k(x,s)F(y(s))ds, x\in{[a,b]}, y(a)=y_0.

对比该样本与待计算的IDE可以得到以下表达式子

a=0, b= 2, y(a)=0, y_0=0, \\ c(y,x) = y(x)-\frac{x^2}{2} + \frac{10}{5-x} - \ln{(1+x^2)}, \\ d(x) = 1/4, q(x) = 2, p(x)=0, \\ k(x,s) = \frac{x}{s+1},\\ f(s) = y(s).

编写代码如下

from idesolver import IDESolver
import matplotlib.pyplot as plt
import numpy as np

from idesolver import IDESolver

solver = IDESolver(
    x = np.linspace(0, 2, 100),
    y_0 = 0,
    c = lambda x, y: y - (.5 * x**2) + (10 / (5 - x)) - np.log(1 + x**2),
    d = lambda x: 1 / 4,
    k = lambda x, s: x / (1 + s),
    f = lambda y: y,
    lower_bound = lambda x: 0,
    upper_bound = lambda x: 2,
)

solver.solve()
solver.x  
solver.y  

绘图显示计算的结果

fig = plt.figure()
ax = fig.add_subplot()
plt.rcParams['font.sans-serif'] = ['SimHei'] 
ax.plot(solver.x, solver.y, label = 'IDESolver 数值解曲线', linestyle = '-', linewidth = 3)
ax.set_title(f'求解过程整体容忍误差 = {solver.global_error_tolerance}')
ax.set_xlabel(r'$x$')
ax.set_ylabel(r'$y(x)$')
plt.show()

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值