【问题标题】:Solving integro-differential coupled system of equations with Python用 Python 求解积分-微分耦合方程组
【发布时间】:2021-08-18 21:08:47
【问题描述】:

我正在尝试使用 Python 来数值求解in this paper 描述的方程组,Eqs. 30 和 31,简化形式如下:

其中G(k)D(k) 是一些已知函数,独立于Y。当然,所有的量也是t 的函数。作者评论说,由于各种函数表现出依赖性,因此需要数值解。

例如,我通常按照herehere 所示的方式实现此类耦合方程的解,但现在额外的 k 依赖性让我有点困惑。

有什么建议吗?非常感谢。

【问题讨论】:

  • 您尝试了什么,遇到了什么问题?告诉我们更多关于这个 k 系数以及它如何阻止你解决这个问题的信息?
  • @jlandercy k 不是参数,而是另一个变量;我已编辑问题以明确显示S。老实说,我什至不知道如何开始。
  • 您是否需要在k 的离散值或给定范围内计算f(t)Y(t)
  • @Patol75 ‘k’是一个连续变量,会在一定范围内积分。
  • 我想我们知道D(k),对吧?是否依赖Y

标签: python scipy


【解决方案1】:

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()

【讨论】:

    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多