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

11 wolfram-mathematica

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

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

acl*_*acl 11

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

dat = {#, Sin[#]} & /@ Range[0, 2*Pi, .1];
Run Code Online (Sandbox Code Playgroud)

创建数据点列表(以形式{x,y}).

fun = Interpolation[dat];
Run Code Online (Sandbox Code Playgroud)

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

NIntegrate[fun[x]^2, {x, 0, 2*Pi}]
Run Code Online (Sandbox Code Playgroud)

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

  • 这似乎是推荐的方式,至少根据文档.曾经有一个带有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." (4认同)