Integrate with Simpson's Rule

5 次查看(过去 30 天)
Hi i have, probably an easy, problem. I made a function (see the outcome below) and i need to integrate the outcome, but since the interval is small the subscript indices aren't integers. This is the problem:
f =
0.0028 0.1333 0.2667 0.4000 0.5333 0.6667 0.8000 0.9333 1.0667 1.1972
So then i use the Simpson Rule:
%interval is [0,1.2]
a = 0; b = 1.2; n =10; h = (b-a)/n
xi=a:h:b
I = h/3*(f(xi(1))+2*sum(f(xi(3:2:end-2)))+4*sum(f(xi(2:2:end)))+f(xi(end)));
But i get the error: Subscript indices must either be real positive integers or logicals.
How can I solve this?

采纳的回答

Matt J
Matt J 2019-1-14
编辑:Matt J 2019-1-14
It doesn't look like you xi should be involved, since you already have the samples of f
I = h/3*(f((1))+2*sum(f((3:2:end-2)))+4*sum(f((2:2:end)))+f((end)));
  1 个评论
David Goodmanson
David Goodmanson 2019-1-14
编辑:David Goodmanson 2019-1-14
Addressing f_i directly (assuming the x_i are equally spaced) is the right method, but the problem is that f has an even number of points. So the end point f(10) gets a weight of 5, not 1.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Numerical Integration and Differential Equations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by