Python:用数值方法求积分的主值

2024-09-30 06:18:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python数值求解积分:

enter image description here

式中,a(x)可以取任何值;正、负、在[-1;1]的内部或外部,eta是无穷小的正数。第二个外积分改变了a(x)的值

我试图用Sokhotski–Plemelj theorem来解决这个问题: enter image description here

但是这涉及到确定原则值,在python中我找不到任何方法来确定这个值。我知道它是在Matlab中实现的,但有人知道在python中确定主要值的库或其他方法(若存在一个原则值的话)?在


Tags: 方法数值etamatlab原则theorem试图用正数
1条回答
网友
1楼 · 发布于 2024-09-30 06:18:15

你可以用sympy直接计算积分。eta->;0的实部是主值:

from sympy import *
x, y, eta = symbols('x y eta', real=True)
re(integrate(1/(x - y + I*eta), (x, -1, 1))).simplify().subs({eta: 0})
# -> log(Abs(-y + 1)/Abs(y + 1))

当然,Matlab的符号工具箱int也给出了相同的结果(我不知道Matlab中其他相关的工具——如果你知道具体的工具,请说明)。在

你问的是主值的数值计算。答案是,如果你只有一个函数f(y),它的分析形式或行为你不知道,一般不可能用数值计算。你需要知道被积函数的极点在哪里,它们的顺序是什么。在

另一方面,如果你知道你的积分形式是f(y) / (y - y_0)scipy.integrate.quad可以为你计算主值,例如:

^{pr2}$

有关详细信息,请参见here。在

相关问题 更多 >

    热门问题