R 中的发散积分可在 Wolfram 中求解

2024-06-19

我知道我以前问过同样的问题,但由于我是新来的,这个问题问得不好而且不可重现。因此我在这里尝试做得更好。 (如果我只编辑旧的,可能没有人会读它)

我有一个想要积分的二重积分:

ff<-function(g,t) exp((16)*g)*exp(-8*t-(-t-0.01458757)^2/(0.0001126501))

integrate(Vectorize(function(t) integrate(function(g) 
                                          ff(g,t), -2.5,0)$value), -2, 2)

在 R 中运行此命令会出现错误:

  the integral is probably divergent

当我尝试在 Wolfram 中运行 sam 函数时,它给了我一个正确的值:(我必须切换 g=x 和 t=y)

Link:

http://www.wolframalpha.com/input/?i=integration+[%2F%2Fmath%3Aexp%28%2816%29*x%29*exp%28-8*y-%28-y-0.01458757%29 ^2%2F%280.0001126501%29%29%2F%2F]+[%2F%2Fmath%3Adx+dy%2F%2F]+for+x+from+[%2F%2Fmath%3A-2.5%2F%2F] +到+[%2F%2Fmath%3A0%2F%2F]+for+y+from+[%2F%2Fmath%3A-2%2F%2F]+到+[%2F%2Fmath%3A2%2F%2F] http://www.wolframalpha.com/input/?i=integration+%5B%2F%2Fmath%3Aexp%28%2816%29*x%29*exp%28-8*y-%28-y-0.01458757%29%5E2%2F%280.0001126501%29%29%2F%2F%5D+%5B%2F%2Fmath%3Adx+dy%2F%2F%5D+for+x+from+%5B%2F%2Fmath%3A-2.5%2F%2F%5D+to+%5B%2F%2Fmath%3A0%2F%2F%5D+for+y+from+%5B%2F%2Fmath%3A-2%2F%2F%5D+to+%5B%2F%2Fmath%3A2%2F%2F%5D

正如你所看到的,它得到了有限的结果,有人可以帮助我吗?

我在定义的区域上绘制了函数,但找不到奇点问题。看:

library('Plot3D')
x <- seq(-2.5,0, by = 0.01) #to see the peak change to: seq(-0.2,0, by = 0.001)
y <- seq(-2,2, by = 0.01) #"": seq(-0.1,0.1, by = 0.001)
grid <- mesh(x,y) 
z <- with(grid,exp((16)*x)*
  exp(-8*y-(-0.013615734-y-0.001+0.5*0.007505^2*1)^2/(2*0.007505^2)))
persp3D(z = z, x = x, y = y)

感谢您的帮助,我希望这个问题比旧问题结构更好。


还值得注意的是,在集成.c https://github.com/wch/r-source/blob/fbf5cdf29d923395b537a9893f46af1aa75e38f3/src/appl/integrate.c源文件中,错误信息的描述为

error messages
...
ier = 5 the integral is probably divergent, or
    slowly convergent. it must be noted that
    divergence can occur with any other value of ier.

因此,尽管该消息显示“可能发散”,但您的代码似乎更有可能缓慢收敛。

另外,当您收到此消息时,您可以继续运行,并提取错误,如果您设置stop.on.error=FALSE

r <- integrate(Vectorize(function(t) 
    integrate(function(g) ff(g,t), -2.5,0)$value
), -2, 2, stop.on.error=FALSE); 
r$value

R 并不像 Mathematica 等 Wolfram 产品那样声称是一个精美的数学求解器。它没有对积分进行任何符号简化,而这正是 Wolfram 多年来一直在完善的东西。如果您只是想数值求解一堆二重积分,像 Mathematica 或 Maple 这样的程序可能是更好的选择。这似乎并不是 R 花费大量开发资源的地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中的发散积分可在 Wolfram 中求解 的相关文章

随机推荐