Why do my loops only run once

2 visualizaciones (últimos 30 días)
Raquel Terrer van Gool
Raquel Terrer van Gool el 14 de Abr. de 2020
Comentada: Raquel Terrer van Gool el 14 de Abr. de 2020
function I=simpson13(f,a,b,n)
h=(b-a)/n; % length of the interval
total=0;
x=a;
fa=f;
x=b;
fb=f;
for i=1:2:n-1;
x=i*h;
fn=f+total;
total=fn;
end
for j=2:2:n-2;
x=j*h;
fm=f+total;
total=fm;
end
I=(h/3)*(fa+fb+4*fn+2*fm);
end
  1 comentario
Raquel Terrer van Gool
Raquel Terrer van Gool el 14 de Abr. de 2020
Editada: Geoff Hayes el 14 de Abr. de 2020
I have n=6:
x=0;
n=6; % n is the number of intervals and must be > 0 and even
a=0; b=pi;% a is the lower bound and b is the upper bound
f=5+13*sin(x); % Function
I=simpson13(f,a,b,n)

Iniciar sesión para comentar.

Respuesta aceptada

Geoff Hayes
Geoff Hayes el 14 de Abr. de 2020
Raquel - the MATLAB debugger is helpful in cases like this. If you put a breakpoint in your simpson13 you would notice a problem with the input parameter f. Look closely at how it is being assigned
x=0;
n=6; % n is the number of intervals and must be > 0 and even
a=0; b=pi;% a is the lower bound and b is the upper bound
f=5+13*sin(x); % Function
f is not a function in this case but is a scalar value (5) since x is zero. If you want f to be an anonymous function then you need to assign it as
f = @(x)5+13*sin(x);
where nthe @ operator creates the handle, and the parentheses () immediately after the @ operator include the function input arguments. You will need to change how this function is used in your code as well. For example,
fa=f(a);
fb=f(b);
etc.
  1 comentario
Raquel Terrer van Gool
Raquel Terrer van Gool el 14 de Abr. de 2020
I solved the problem with your help. Thank you very much!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by