Simpson's Rule

2 visualizaciones (últimos 30 días)
cee878
cee878 el 25 de Abr. de 2016
Respondida: Roger Stafford el 25 de Abr. de 2016
I coded Simpson's Rule, but I'm not sure if it's right.
f = @(x) exp(-x.^2);
true = integral(f, 0, 1);
%simpson's rule
n = 128;
k= n/2;
a = 0; b = 1;
h = (b-a)/n;
x = a + h;
sum1 = (h/3)*(f(b)+ f(a));
sum1 = sum1 + (4*h/3)*f(x);
for j = 1:n-1
x1 = a+(2*j)*h;
x2 = a + (2*j+1)*h;
sum1 = sum1 + (2*h/3)*f(x1)+(4*h/3)*f(x2);
end
error1 = abs(true-sum1);
fprintf(' Simpsons %d : %0.8f \n', n, sum1);
fprintf('Simpsons Error: %0.8f \n', error1);
  1 comentario
Geoff Hayes
Geoff Hayes el 25 de Abr. de 2016
Chris - what makes you think that the algorithm has been coded incorrectly? Presumably you must have a set of test data that you will use to validate the above. What do you notice when you do so?

Iniciar sesión para comentar.

Respuesta aceptada

Roger Stafford
Roger Stafford el 25 de Abr. de 2016
I think you made an error on the line
for j = 1:n-1
It should be
for j = 1:k-1
where k = n/2. As it stands now, the x2 reaches a value of a+(2*n-1)*h which is far beyond the range from 0 to 1.

Más respuestas (0)

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by