python - 用 Python 求解积分-微分耦合方程组
问题描述
我正在尝试使用 Python 对本文中描述的方程组进行数值求解,Eqs。30 和 31,简化形式如下:
其中G(k)
和D(k)
是一些已知函数,与 无关 Y
。当然,所有的量也是的函数t
。作者评论说,由于各种函数表现出依赖性,因此需要数值解。
例如,我通常按照此处或此处所示的方式实现此类耦合方程的解,但现在额外的 k 依赖性让我有点困惑。
有什么建议么?非常感谢。
解决方案
IDESolver
是由Josh Karpel创建的通用数值积分微分方程求解器。它的最新版本允许用户解决多维、耦合的 IDE。从提供的示例中,IDE 像
使用解析解(sin x, cos x),可以使用以下代码解决:
import numpy as np
import matplotlib.pyplot as plt
from idesolver import IDESolver
solver = IDESolver(
x=np.linspace(0, 7, 100),
y_0=[0, 1],
c=lambda x, y: [0.5 * (y[1] + 1), -0.5 * y[0]],
d=lambda x: -0.5,
f=lambda y: y,
lower_bound=lambda x: 0,
upper_bound=lambda x: x,
)
solver.solve()
fig = plt.figure(dpi = 600)
ax = fig.add_subplot(111)
exact = [np.sin(solver.x), np.cos(solver.x)]
ax.plot(solver.x, solver.y[1], label = 'IDESolver Solution', linestyle = '-', linewidth = 3)
ax.plot(solver.x, exact[1], label = 'Analytic Solution', linestyle = ':', linewidth = 3)
ax.legend(loc = 'best')
ax.grid(True)
ax.set_title(f'Solution for Global Error Tolerance = {solver.global_error_tolerance}')
ax.set_xlabel(r'$x$')
ax.set_ylabel(r'$y(x)$')
plt.show()
推荐阅读
- php - 我无法通过索引访问 $_POST 值
- android - 手机在android中的当前位置
- ide - WebStorm IDE 表现得很有趣
- reactjs - Ionic 4 动画对象
- sql - 在 select 下使用 xp_cmdshell 进行 SQL 查询
- c# - 尝试使用 DropZone JS 上传文件时服务器响应 400 代码
- google-cloud-datastore - 数据存储批量查询大小
- sql-server - 从 SQL Server 到 Postgres 的数据迁移
- python - matplotlib 直方图,x 轴上有两个条形图和字符串值
- r - 使用 purrr 从列表的列表中删除错误元素