问题 在给定两个数据列表的mathematica中进行数值积分


在给定两个数据列表的情况下,是否存在用于在Mathematica中进行数值积分的内置例程 {x1, x2, ..., xn} 和 {y1, y2, ..., yn}

我想做一些像梯形整合或其他的东西。似乎没有 NIntegrate 可以做到这一点。当然我可以自己写。想想可能有太多的数值集成方案试试,特别是当我渴望得到它时。


10932
2017-12-15 21:58


起源



答案:


可能不是你的想法,但你可以设置插值函数:

dat = {#, Sin[#]} & /@ Range[0, 2*Pi, .1];

创建一个数据点列表(以。的形式) {x,y})。

fun = Interpolation[dat];

创建插值函数(尝试绘图 Plot[fun[x],{x,0,2*Pi}] 看看它是什么)。然后你可以使用 NIntegrate

NIntegrate[fun[x]^2, {x, 0, 2*Pi}]

但是,如果你真的想用matlab方式做到这一点也是可能的。


11
2017-12-15 22:05



还记得你可以使用 InterpolationOrder - > n 如果需要的话 - Dr. belisarius
这似乎是推荐的方式,至少根据文档。曾经有一个带有ListIntegrate函数的附加软件包。此状态的文档:“在版本6中,ListIntegrate已被Integrate [Interpolation [data,InterpolationOrder-> k] [x],{x,Max [下标[x,c]],Min [下标[x,c]取代]]}],for data = {{Subscript [x,1],Subscript [y,1]},...,{Subscript [x,n],Subscript [y,n]}} with Subscript [x, c] = data [[All,1]]。默认的插值顺序是k = 3。“ - Daniel Lichtblau
另一点,一些高阶数值积分方案建立在插值中的思想基础之上。 - rcollyer
(也是@littleEinstein)因为我现在正在这样做,所以我想补充一点 Integrate, D 和恶魔的支持 InterpolatingFunction 对象直接。这意味着反衍生物 fun 可以直接构造为 Derivative[-1][fun]。结果是另一个 InterpolatingFunction。 - Szabolcs
对不起,我刚才意识到Daniel Lichtblau提到了同样的事情。 - Szabolcs


答案:


可能不是你的想法,但你可以设置插值函数:

dat = {#, Sin[#]} & /@ Range[0, 2*Pi, .1];

创建一个数据点列表(以。的形式) {x,y})。

fun = Interpolation[dat];

创建插值函数(尝试绘图 Plot[fun[x],{x,0,2*Pi}] 看看它是什么)。然后你可以使用 NIntegrate

NIntegrate[fun[x]^2, {x, 0, 2*Pi}]

但是,如果你真的想用matlab方式做到这一点也是可能的。


11
2017-12-15 22:05



还记得你可以使用 InterpolationOrder - > n 如果需要的话 - Dr. belisarius
这似乎是推荐的方式,至少根据文档。曾经有一个带有ListIntegrate函数的附加软件包。此状态的文档:“在版本6中,ListIntegrate已被Integrate [Interpolation [data,InterpolationOrder-> k] [x],{x,Max [下标[x,c]],Min [下标[x,c]取代]]}],for data = {{Subscript [x,1],Subscript [y,1]},...,{Subscript [x,n],Subscript [y,n]}} with Subscript [x, c] = data [[All,1]]。默认的插值顺序是k = 3。“ - Daniel Lichtblau
另一点,一些高阶数值积分方案建立在插值中的思想基础之上。 - rcollyer
(也是@littleEinstein)因为我现在正在这样做,所以我想补充一点 Integrate, D 和恶魔的支持 InterpolatingFunction 对象直接。这意味着反衍生物 fun 可以直接构造为 Derivative[-1][fun]。结果是另一个 InterpolatingFunction。 - Szabolcs
对不起,我刚才意识到Daniel Lichtblau提到了同样的事情。 - Szabolcs