Error in matrix dimension and using a plus sign?

1 次查看(过去 30 天)
I am trying to write a code for the Midpoint rule given by :
M = \sum_{i=1}^{n}hf(\frac{x_{i-1}+x_{i}}{2})
My MATLAB code is following:
if true
function M = mittpunkt(fun,a,b,n)
h = (b-a)/n;
x = linspace(a,b,n);
f = fun(x);
M = h*(sum(f(((1:n-1)+(1:n))/2)));
end
My error is :
Error using +
Matrix dimensions must agree.
If something is wrong I think it must me the index, certainly not the use of a plus sign, right? Thanks

采纳的回答

the cyclist
the cyclist 2013-6-19
In the line where you calculate M, you are trying to add
(1:n-1)
and
(1:n)
which are vectors of two different lengths. Those are the dimensions that don't match.

更多回答(1 个)

Andrei Bobrov
Andrei Bobrov 2013-6-19
编辑:Andrei Bobrov 2013-6-19
Wikipedia about your problem:
function M = mittpunkt(fun,a,b,n)
h = (b-a)/n;
x = linspace(a,b,n);
f = fun(x);
%M = h*(sum(f(((1:n-1)+(1:n))/2))); your code
M = h*sum(f(1:end-1)+f(2:end))/2; % from Wikipedia
end

类别

Help CenterFile Exchange 中查找有关 Simulation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by