数值求解逆变换和解析解不符
mathematica吧
全部回复
仅看楼主
level 2
adorerdu 楼主
我的问题需要用到mellin逆变换,但没有解析解,所以想用个简单算例比较下数值积分与解析解的误差。代码如下:
r = 2;
f[s_] := Gamma[s]*Gamma[1 - s]
InverseMellinTransform[f[s], s, r]
NIntegrate[1/(2 \[Pi] I) f[s] r^-s, {s, 1 - 5 I, 1 + 5 I}
(*Exclusions->{0}*), WorkingPrecision -> 20,
MaxRecursion -> 20] // Timing
NIntegrate[
Re[1/(2 \[Pi]) f[1 + p I]/
r (Cos[p Log[r]] - I Sin[p Log[r]])], {p, -5, 5}
(*Exclusions->{0}*), WorkingPrecision -> 20, AccuracyGoal -> 8,
MaxRecursion -> 100, PrecisionGoal -> 100,
Method -> {"GlobalAdaptive", "MaxPoints" -> 1000}] // Timing
第一个输出的是解析解的结果,第二个是直接按照mellin逆变换的积分定义写的数值积分,第三个是按照定义写出积分后令积分变量s=1+i*p(以使得积分上下限为实数)。
我画出了这个函数实部的图像,
虚部的图像,
是关于y轴对称且数值集中在[-3,3],所以数值积分区间取了[-5,5]。但是第一个数值解给出的结果是复数,且实部也不等于解析解结果。第二钟数值解因为虚部积分是0,为了避免奇点,我直接在实部积分,但是结果与前一种一样,依旧对不上解析解。
想知道有没有大佬做过类似的逆变换问题,有什么解决的思路吗?
2024年04月08日 10点04分 1
level 2
adorerdu 楼主
2024年04月08日 12点04分 4
level 2
adorerdu 楼主
2024年04月08日 12点04分 5
level 2
adorerdu 楼主
2024年04月08日 12点04分 6
level 2
adorerdu 楼主
求助大佬[泪]
2024年04月08日 12点04分 7
level 9
InverseMellinTransform[Gamma[s]*Gamma[1 - s], s, r, GenerateConditions -> True]
因此你NIntegrate里面的{s, 1 - 5 I, 1 + 5 I}是错误的
2024年04月08日 14点04分 8
感谢大佬[真棒],忽略了定义域,这样就都对上了
2024年04月09日 02点04分
1