首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mathematica:数值积分中的求值顺序

问mathematica:数值积分中的求值顺序
EN

Stack Overflow用户
提问于 2016-05-25 20:19:54
回答 2查看 337关注 0票数 0

嗨,我有一个关于数学中的数值积分的问题。下面是我的测试函数

代码语言:javascript
复制
Table[NIntegrate[
Boole[Sqrt[1 - cosk^2]*Sqrt[1 - cosk2^2] > Abs[a - cosk*cosk2]]/
Sqrt[(1 - cosk^2)*(1 - cosk2^2) - (a - cosk*cosk2)^2],
{cosk, -1,1}, {cosk2, -1, 1}, Method -> "GlobalAdaptive"], {a, -.9, .9, .1}]

虽然由于被积函数中的布尔函数,sqrt中的参数应该始终为正,因此只产生实值,但是积分会产生复数值。有没有可能首先计算布尔函数,并且只有当它为真时,才开始数值积分?

如果我使用蒙特卡洛积分策略计算相同的积分

代码语言:javascript
复制
Table[NIntegrate[
Boole[Sqrt[1 - cosk^2]*Sqrt[1 - cosk2^2] > Abs[a - cosk*cosk2]]/
Sqrt[(1 - cosk^2)*(1 - cosk2^2) - (a - cosk*cosk2)^2], {cosk, -1, 
1}, {cosk2, -1, 1}, Method -> {"MonteCarlo", "MaxPoints" -> 10^8, 
"SymbolicProcessing" -> None}], {a, -.9, .9, .1}]

由于布尔函数,我如何才能确定它是否包含了大量的零?我认为,如果首先评估蒙特卡洛网格的每个采样点的布尔函数,那么评估可以节省大量的计算时间。如果我用"AdaptiveMonteCarlo“替换"MonteCarlo”,结果就完全错了。

EN

回答 2

Stack Overflow用户

发布于 2016-05-25 21:06:16

如果你变成一个真正的守卫会发生什么?( Boole表单可能过于聪明(Mathematica可能不会将false --> 0视为真正的守卫)。)

代码语言:javascript
复制
Table[NIntegrate[
If[Sqrt[1 - cosk^2]*Sqrt[1 - cosk2^2] > Abs[a - cosk*cosk2],
1/Sqrt[(1 - cosk^2)*(1 - cosk2^2) - (a - cosk*cosk2)^2], 0],
{cosk, -1,1}, {cosk2, -1, 1}], {a, -.9, .9, .1}]
票数 0
EN

Stack Overflow用户

发布于 2016-05-25 22:42:17

下面是如何使用EvaluationMonitor了解采样方法的作用:

代码语言:javascript
复制
out = Reap[With[{a = -.9},
   NIntegrate[
    v = Boole[
       Sqrt[1 - cosk^2]*Sqrt[1 - cosk2^2] > Abs[a - cosk*cosk2]]/
      Sqrt[(1 - cosk^2)*(1 - cosk2^2) - (a - 
           cosk*cosk2)^2], {cosk, -1, 1}, {cosk2, -1, 1}, 
    Method -> "LocalAdaptive", 
    EvaluationMonitor :> Sow[{cosk, cosk2, v}]]]]

注意:LocalAdaptive非常慢,但可能是最准确的纯数值结果:

代码语言:javascript
复制
     Graphics@Point[out[[2, 1]][[All, {1, 2}]]]

​

​

这是全局自适应。

​

​

MonteCarlo只是在任何地方进行采样,而不考虑被积分值。

最好的方法可能是使用全局自适应并设置MinRecursion。满足自己,虚构的部分可以忽略不计,并接受结果的真实部分。当然,以解析的方式解决您的集成限制并完全消除Boole会好得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37436938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档