2024-09-30 06:18:15 发布
网友
我用python数值求解积分:
式中,a(x)可以取任何值;正、负、在[-1;1]的内部或外部,eta是无穷小的正数。第二个外积分改变了a(x)的值
我试图用Sokhotski–Plemelj theorem来解决这个问题:
但是这涉及到确定原则值,在python中我找不到任何方法来确定这个值。我知道它是在Matlab中实现的,但有人知道在python中确定主要值的库或其他方法(若存在一个原则值的话)?在
你可以用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中其他相关的工具——如果你知道具体的工具,请说明)。在
int
你问的是主值的数值计算。答案是,如果你只有一个函数f(y),它的分析形式或行为你不知道,一般不可能用数值计算。你需要知道被积函数的极点在哪里,它们的顺序是什么。在
f(y)
另一方面,如果你知道你的积分形式是f(y) / (y - y_0),scipy.integrate.quad可以为你计算主值,例如:
f(y) / (y - y_0)
scipy.integrate.quad
有关详细信息,请参见here。在
你可以用sympy直接计算积分。eta->;0的实部是主值:
当然,Matlab的符号工具箱
int
也给出了相同的结果(我不知道Matlab中其他相关的工具——如果你知道具体的工具,请说明)。在你问的是主值的数值计算。答案是,如果你只有一个函数
f(y)
,它的分析形式或行为你不知道,一般不可能用数值计算。你需要知道被积函数的极点在哪里,它们的顺序是什么。在另一方面,如果你知道你的积分形式是
^{pr2}$f(y) / (y - y_0)
,scipy.integrate.quad
可以为你计算主值,例如:有关详细信息,请参见here。在
相关问题 更多 >
编程相关推荐