如何得知MMA选择的数值积分方法?
mathematica吧
全部回复
仅看楼主
level 1
sss668800
楼主
如题,MMA提供的数值积分方法有十多种,每种里面各种参数又能设置很多类型。
我想知道每次MMA运行完数值积分以后,自带选取的方法。查了帮助没找到,有谁知道的,能说说看嘛?谢谢
(PS:每次把十多种方法一一测试的工程量实在是太大了)
2018年05月05日 03点05分
1
吧务
level 15
xzcyr
参看这帖:
https://mathematica.stackexchange.com/a/96663/1871
2018年05月05日 03点05分
2
sss668800
版主,这个帖子我看了,确实tracing code能捕捉到数值积分的方法,但是我希望得到不同积分方法的具体积分区间以及每个区间采样点和权重,似乎tracing code只找到了积分方法,而积分采样点、权重和误差给出的是11个点的固定值,我尝试更换了被积函数和振荡积分,仍然是那11个点。
2018年05月07日 03点05分
sss668800
难道说MMA默认所有高斯型的积分,都用11个点搞定?
2018年05月07日 03点05分
sss668800
还有个问题,就是用tracing code给出的积分顺序似乎得要倒着看?按他的说法先统一给GlobalAdaptive,再针对这个积分选择GaussKronrodRule,经过初始化将GaussKronrodRule设为GeneralRule。但是输出顺序是反过来的哈,现有GaussKronrodRule再是GaussKronrodRule,最后才是GlobalAdaptive
2018年05月07日 03点05分
sss668800
今天研究了一下,又碰到个纯函数的问题无法理解,见下一楼。。。
2018年05月08日 12点05分
level 1
sss668800
楼主
数值积分监控器IntegrationMonitor,我想知道以下代码具体是什么意思?代码如下:
Reap[NIntegrate[x, {x, 0, 1},
IntegrationMonitor -> (Sow[
Map[{
#1@"Integrand", #
1@"Boundaries"} &, #1]] &)]]
我能理解Reap&Sow组合是获取IntegrationMonitor的方法,链接里面给截图说明Integrand是被积函数,Boundaries是边界。但是我看不懂纯函数Map[{
#1@"Integrand", #
1@"Boundaries"} &, #1]] &,请问这个代码是怎么将IntegrationMonitor的参数截获的呢?原理是什么?
2018年05月08日 12点05分
3
sss668800
我能理解的是Reap&Sow组合在每一次数值积分采样后,把所需要的"Integrand"和"Boundaries"等信息提取出来。但是这个纯函数代码作用在谁上面?#1对应的函数是什么?是IntegrationMonitor的信息呢,还是数值积分呢? xzcyr xzcyr
2018年05月08日 12点05分
xzcyr
@sss668800
我这样写会不会好理解一点: Reap[NIntegrate[x, {x, 0, 1}, IntegrationMonitor -> Function[list, Sow@Map[Function[ integrationRegion, {integrationRegion@"Integrand", integrationRegion@"Boundaries"}], list]]]]
2018年06月02日 06点06分
level 1
sss668800
楼主
有人给出NIntegrate[x, {x, 0, 1}, IntegrationMonitor -> Print],这个相比Reap&Sow组合的缺点是一次给出所有信息,包括采样点,太乱了。所以我想用Reap&Sow+纯函数组合。
顺便给给出IntegrationMonitor支持监视的截图,还是很强大的:
2018年05月08日 12点05分
4
1