0

问题的解决方案是辛普森 1/3 规则的 1.732400451459101。相反,程序给我的解决方案是 1.73239801

谁能帮我吗?提前致谢。

clc
clear
close all

f = @(x) sin(x);
a = 0.1; 
g = a;
b = 2.4;
k = 19;   

n = 2*k;
S = 0;
h = (b-a)/n;

for i=1:k
    S=S+(h/3)*(f(a)+4*f(a+h)+f(a+2*h));
    a=a+2*h;

end

fprintf('La integral se aproxima a: %0.8f \n',S)

syms x

y = sin(x);

InT = int(y,g,b);

InT = double(InT)
4

1 回答 1

0

用复合辛普森规则逼近积分的误差是:

在此处输入图像描述

这是关于以防1.7149e-07万一f(x)=sin(x),这意味着绝对误差范围是9.8990e-08,这对我来说是可口的。

此外,这里是上面代码的替代方案:

f = @(x) sin(x);
[a,b,g,k]=deal(0.1,2.4,0.1,19);
[S,n,h]=deal(0,2*k,(b-a)/(2*k));
for i=1:k
    S=S+(h/3)*(f(g)+4*f(g+h)+f(g+2*h));
    g=g+2*h;
end

或者,我们可以调用:

f = @(x) sin(x);
[a,b,k]=deal(0.1,2.4,19);
Int = a:(b-a)/(2*k):b;
S=(b-a)/(6*k) * ( f(Int(1)) + 4*sum(f(Int(2:2:end-1))) ...
                + 2*sum(f(Int(3:2:end-2))) + f(Int(end)));
于 2018-03-10T13:56:22.733 回答