s = 
The estimation error is strangely obtained from Simpson's 1/3 rule...
Mostra commenti meno recenti
Hello, I am looking for the estimation error of Simpson's rule of thirds. When dx is 1.01, the integral value is 2908800 and the error is 0.01, but the estimation error is 7.0844e-21. Where did it go wrong? I think In this part, the 5th coefficient is verry verry small, so it seems that the value will always be low. Isn't the estimation error always accurate?
clc; clear all; close all;
a = -1.93317553181561E-24;
b = 3.788630291530091e-21;
c = -2.3447910280083294e-18
d = -0.019531249999999518;
e = 18.74999999999999
fun = @(t) a.*t.^5 + b.*t.^4 + c.*t.^3 + d.*t.^2+e.*t
x = 0:0.1:960;
fx =fun(x);
n=960;
dx=1.01;
int=0;
for i =1:n
plot(x, fx,'k','linewidth',2);
mid=((i-1)+i)/2;
fx_mid = fun(mid);
fx_left = fun(i-1);
fx_right = fun(i);
area_temp = dx/6*(fx_left +4*fx_mid+fx_right);
int = int + area_temp;
x_segment = linspace(i-1, i,100);
Px = fx_left * ((x_segment-mid).*(x_segment-i))/((i-1-mid)*(i-1-i))...
+ fx_mid*((x_segment-i+1)).*(x_segment-i)/((mid-i+1)*(mid-i))...
+ fx_right * ((x_segment-i+1).*(x_segment-mid))/((i-i+1)*(i-mid));
area(x_segment,Px); hold on;
end
C=480;
E_a = -((960.^5)/(2880.*(960/1.01).^4)).*(a.*120.*C+24.*b);%Is there a problem here?
disp('E_a');
disp(E_a);
disp(int);
int_true = 2880000
rel_error=norm(int_true-int)/norm(int_true);
disp('rel_error');
disp(rel_error);
5 Commenti
Why do you insert C = 480 in the formula ?
And did you think about all the errors that arise because the function evaluation is imprecise and because you lose precision when summing the 960 values in the variable "int" ?
Maybe using advanced precision with vpa can help.
재훈
il 22 Mag 2024
재훈
il 22 Mag 2024
I didn't know to think about all the errors that occur due to loss of precision when summing 960 values in variable "int"
Plus the error in evaluating a polynomial with such small coefficients. You will have to go the symbolic way (see below).
Steven Lord
il 23 Mag 2024
The user posted about this at least three times. While I closed one of them as duplicate, both this post and https://www.mathworks.com/matlabcentral/answers/2121361-the-estimation-error-is-strangely-obtained-from-simpson-s-1-3-rule?s_tid=prof_contriblnk have useful comments or answers.
Risposta accettata
Più risposte (1)
recent works
il 22 Mag 2024
4 voti
The error calculation in your code should be
C = 480;
f4_max = -1.324287168211725E-19; % This is an approximation
h = 1.01;
E_a = -(960 / 180) * (h^4) * f4_max;
disp('E_a');
disp(E_a);
1 Commento
재훈
il 23 Mag 2024
Categorie
Scopri di più su Numerical Integration and Differentiation in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!