介绍
假设我有 N
个点,其函数值为 f(1:N)
,例如:
x(1:N)
点如下:x = [ 0.0795, 0.1327, 0.1395, 0.5133, 0.6470, 0.7358, 0.7640 ];
f = [ 0.0388, 0.4774, 0.4547, 0.0784, 0.3241, 0.2818, 0.9667 ];
我希望使用这些数据计算 f
相对于 x
的累积积分。
低阶解决方案
在MATLAB中,我可以轻松使用cumtrapz()
来完成:
>> result = cumtrapz( x, f )
result =
0 0.0137 0.0169 0.1165 0.1434 0.1703 0.1879
问题
很不幸,cumtrapz()
使用梯形法进行数值积分,这对我的目的来说是不够的。
更高阶的方法存在,如辛普森规则,但据我所知,在MATLAB文件交换处或其他任何地方没有执行非均匀网格的累计辛普森规则的函数。
是否已经存在cumtrapz()的更高阶版本?如果不存在,我需要怎么做才能自己实现它?
integral
函数,该函数使用自适应的数值积分方法。 - Luis Mendo