【发布时间】:2018-04-30 13:18:38
【问题描述】:
简介
假设我有N 点x(1:N) 我有函数值f(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() 使用梯形法进行数值积分,这对于我的目的来说是不够的。
Higher-order methods exist,类似于辛普森规则,但据我所知,在 MATLAB File Exchange 或其他任何地方,没有针对非均匀网格执行辛普森规则的累积版本的函数。
是否已经存在 cumtrapz() 的高阶版本?如果没有,我需要自己做些什么来实现它?
【问题讨论】:
-
这并不能真正回答你的问题,但如果你有函数(不仅仅是它的值),你可以使用
integral,它使用自适应求积法 -
是的,我需要在没有函数的情况下近似积分 - 只是值。
标签: matlab numerical-integration