求助NIntergral函数得到在奇点得到两个数值
mathematica吧
全部回复
仅看楼主
level 1
咖啡机◎ 楼主
Ns = 2; Nd = 2; ra = 5;
b = 0.158; m = 19.4; ow = 1.29;
rg = 10^(1/10);
alpha = (1/(2*b))*((2*b*m)/(2*b*m + ow))^m; beta1 = 1/(2*b); delta =
ow/(2*b*(2*b*m + ow));
d = Max[Ns, Floor[m*Ns]]; c = Max[d - Ns, 0]; epc = m*Ns - d;
l = 1;
NIntegrate[(ExpIntegralEi[-x]*((-x^(-d + l - 1))*
MeijerG[{{1}, {d - l}}, {{d - l + 1, d - l + 1, d}, {}},
(10^(ra/10)*x)/((beta1 - delta)*rg)])*
MeijerG[{{1}, {}}, {{Nd, Nd + 1}, {}}, (10^(ra/10)*x)/rg])/x^Nd,
{x, 0, Infinity}]
----------------------------------------------
Ei和两个Meijer函数的数值积分,但是在奇点的时候显示得到两个函数值,相差非常大,求助应该怎么解决[哈哈]
2019年01月18日 01点01分 1
level 1
咖啡机◎ 楼主
NIntegrate::ncvb: 在接近 {x} = {8.94516} 处的 x 中进行 9 次迭代对分后,NIntegrate 无法收敛到规定的准确度. 对于积分和误差估计,NIntegrate 得到 -5.96103*10^41 和 1.4495322360633814`*^37.
NIntegrate::slwcon: 数值积分收敛速度太慢;可能是如下原因:奇点,积分值是 0,高度振荡的被积函数,或者 WorkingPrecision 太小.
测试了x从1逐渐变大,到8.9这个地方大概是奇点,这个奇点是不知道位置的,整个积分的运算速度很慢[泪]
2019年01月18日 01点01分 2
level 1
咖啡机◎ 楼主
自己解决了,把积分上限减少了,无法解释这种做法,但是和想要的值差不多
2019年01月22日 09点01分 3
吧务
level 15
……不知顶楼的代码要运算多久?我在版本9.0.1已经跑了十来分钟了。
2019年03月02日 07点03分 4
我是11.2版本,跑了将近5分钟,因为MeijerG函数是特殊函数,因此需要添加精度使其计算准确
2019年03月04日 02点03分
1