Simple solution to a simple problem

1 visualización (últimos 30 días)
Chris
Chris el 14 de Jun. de 2013
Hey, Im trying to write an algorithm to compute the integral of a user inputted function with limits. I wrote the following code:
function I=Simpson38(Fun,a,b)
N=3;
dif=1;
I1=0;
func=inline(Fun);
while dif>0.001
h=(b-a)/N;
Ia=(h*3/9)*(func(1)+func(N+1));
Ib=(h*3/9)*(2*sum(func(4:3:(N-2))));
Ic=(h*3/9)*(3*sum(func(2:3:(N-1)))+sum(fun(3:3:N-1)));
I2=Ia+Ib+Ic;
dif=(I1-I2)/I2;
I1=I2;
N=N*2;
end
I=I1;
When i run the code i get the following error: ??? Error using ==> inlineeval at 15 Error in inline expression ==> 1/(1+9*x.^2) Matrix dimensions must agree.
Error in ==> inline.subsref at 27 INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
Error in ==> Simpson38 at 9 Ib=(h*3/9)*(2*sum(func(4:3:(N-2)))); What could be the problem?

Respuestas (1)

Richard Brown
Richard Brown el 14 de Jun. de 2013
Try
1./(1 + 9*x.^2)
i.e. a '.' before the division
  2 comentarios
Chris
Chris el 14 de Jun. de 2013
Worked! Thanks!
Richard Brown
Richard Brown el 16 de Jun. de 2013
Great! Please "accept" the answer so people browsing the forum knows it's been answered

Iniciar sesión para comentar.

Categorías

Más información sobre Numerical Integration and Differential Equations en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by