实验三 数值积分与数值积分
专业:计算机应用技术 姓名:张戈力 学号:12012001051
实验任务
1.用复化辛普森公式计算定积分
并将计算结果与实际准确值比较,分析其误差。
实验程序:
function y=comsimpson(fun,a,b,n)
z1=feval (fun,a)+ feval (fun,b);m=n/2;
h=(b-a)/(2*m); x=a;
z2=0; z3=0; x2=0; x3=0;
for k=2:2:2*m
x2=x+k*h; z2= z2+2*feval (fun,x2);
end
for k=3:2:2*m
x3=x+k*h; z3= z3+4*feval (fun,x3);
end
y=(z1+z2+z3)*h/3;
f=inline(1./(1+(x.^2)),x);
Q1=comsimpson (f,0,1,10000)
syms x
fi=int(1./(1+(x.^2)),x,0, 1);
Fs= double (fi)
wQ1= double (abs(fi-Q1) )
实验结果:
Q1 = 0.7853
Fs =0.7854
wQ1 =1.0000e-04
实验分析:
划分区间为10000,得到的绝对误差为1.0000e-04,我们可以通过增加区间的划分数来减少其误差值,同时相应的运算量也会增大。
2. 计算定积分(自选方法)
实验程序:
function y=comsimpson(fun,a,b,n)
z1=feval (fun,a)+ feval (fun,b);m=n/2;
h=(b-a)/(2*m); x=a;
z2=0; z3=0; x2=0; x3=0;
for k=2:2:2*m
x2=x+k*h; z2= z2+2*feval (fun,x2);
end
for k=3:2:2*m
x3=x+k*h; z3= z3+4*feval (fun,x3);
end
f=inline(sin(x)./(1+x),x);
Q1=comsimpson (f,0,1,10000)
syms x
fi=int(sin(x)./(1+x),x,0, 1);
Fs= double (fi)
wQ1= double (abs(fi-Q1) )
实验结果:
Q1 =0.2843
Fs =0.2842
wQ1 =2.8036e-05
实验分析:
利用comsimpson函数计算定积分,并将误差控制在1e-05这个量级,得到的结果与直接使用int函数计算定积分相同,说明此函数计算的结果已经很精确。
3. 完成例1—例5实验,给出实验结果,并分别进行分析。
例1:实验程序:
function T=rctrap(fun,a,b,m)
n=1;h=b-a; T=zeros(1,m+1); x=a;
T(1)=h*(feval(fun,a)+feval(fun,b))/2;
for i=1:m
h=h/2; n=2*n; s=0;
for k=1:n/2
x=a+h*(2*k-1); s=s+feval(fun,x);
end
T(i+1)=T(i)/2+h*s;
end
T=T(1+m)
f=inline(exp(( -x.^2)./2)./(sqrt(2*pi)),x);
T=rctrap(f,0,pi/2,14)
syms t
fi=int(exp(( -t^2)/2)/(sqrt(2*pi)),t,0, pi/2);
Fs= double(fi)
wT= double(abs(fi-T))
实验结果:
T =0.4419
Fs =0.4419
wT =1.3979e-10
例2:实验程序:
function y=comsimpson(fun,a,b,n)
z1=feval (fun,a)+ feval (fun,b);m=n/2;
h=(b-a)/(2*m); x=a;
z2=0; z3=0; x2=0; x3=0;
for k=2:2:2*m
x2=x+k*h; z2= z2+2*feval (fun,x2);
end
for k=3:2:2*m
x3=x+k*h; z3= z3+4*feval (fun,x3);
end
y=(z1+z2+z3)*h/3;
f=inline(exp( (-x.^2)./2)./(sqrt(2*pi)),x);
[Q1,FCNT14] = quad(f,0,1,10e-4,3)
Q2 =comsimpson (f,0,1,10000)
syms x
fi=int(exp( (-x.^2)./2)./(sqrt(2*pi)),x,0, 1);
Fs= double (fi)
wQ1= doub
原创力文档

文档评论(0)