Simpson's Rule
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
cee878
am 25 Apr. 2016
Beantwortet: Roger Stafford
am 25 Apr. 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 Kommentar
Geoff Hayes
am 25 Apr. 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?
Akzeptierte Antwort
Roger Stafford
am 25 Apr. 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.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Numerical Integration and Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!