求解沃尔泰拉积分方程的数值包

计算科学 Python 积分方程 软件推荐
2021-12-05 11:20:06

我正在寻找数值包(最好是 Python)来解决第二种 Volterra 积分方程,例如

u(t)=g(t)+0tK(t,s)u(s)ds

或 Volterra-Fredholm 积分方程

u(x,t)=g(t,x)+c0tΩK(t,s,x,ξ)u(s,ξ)dξds

Python中是否有任何可调用的函数来解决这些方程?如果没有,是否有任何标准算法来解决这些方程?

1个回答

您通常可以通过变换求解这些类型的方程。Shampine讨论了如何将 Volterra 积分方程转换为 ODE,然后使用刚性 ODE 求解器对其进行求解。如果您首先离散u(x)化成一个 ODE 系统,那么在这种情况下您可能会做类似的事情。

如果您想直接处理一般功能 ODE,则有两种方法。一种方法是为每种类型的子问题开发特定的求解器,如果您环顾四周,就会对此进行研究,但没有太多软件可以与之配套。另一方面,一般的状态相关延迟微分方程求解器可以做这种事情,因为它们为您提供了完整u(s)s<t. 这意味着您实际上可以使用该插值来获取该间隔。但是根据 Shampine 的分析,您可以看到这些东西很容易变得僵硬,因此 DDE 求解器需要能够处理刚度。DifferentialEquations.jl 的 DDE 求解器具有这种灵活性,我相信 Maple 的求解器也可以在这里工作。我相信RADAR5也有这种灵活性。我不确定是否有类似的 Python 产品。您需要确保设置某种缓存结构,以免每一步都完全重新解决该积分(为了提高效率),但使用这种方法构建软件应该不会太难。也就是说,它可能不会像转换或更直接的求解器方法那样有效。