MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Snirisa Gödel on 19 Jun 2013

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

*No products are associated with this question.*

Answer by the cyclist on 19 Jun 2013

Accepted answer

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.

Answer by Andrei Bobrov on 19 Jun 2013

Edited by Andrei Bobrov on 19 Jun 2013

`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

## 0 Comments