《计算方法》课内实验报告
学生姓名:张靖2012309010111
及学号:
学院:理学院
班级:信计121
课程名称:计算方法
实验题目:插值法与函数逼近
指导教师
周硕教授
姓名及职称:
朱振菊实验师
2014年11月03日
目录
一、实验题目 (1)
二、实验目的 (1)
三、实验内容 (1)
四、实验结果 (2)
五、实验体会或遇到问题 (8)
一、实验题目
1.熟悉matlab 编写及运行数值计算程序的方法。
2.进一步理解数值积分的基础理论。
3.进一步掌握应用不同的数值积分方法求解给定的积分并给出数据结果及误差分析。
二、实验目的
1.熟悉matlab 编写及运行数值计算程序的方法。
2.进一步理解插值法及函数逼近方法的理论基础。
3.进一步掌握给定数据后应用插值法及函数逼近方法进行数据处理并给出图示结果的实际操作过程。
三、实验内容
1.分别用复合梯形求积公式及复合辛普森求积公式计算积分xdx x ln 1
⎰
,要求计
算精度达到410-,给出计算结果并比较两种方法的计算节点数. 2.用龙贝格求积方法计算积分dx x x ⎰+3
021,使误差不超过510-.
3.用3=n 的高斯-勒让德公式计算积分⎰3
1
sin x e x ,给出计算结果.
4.用辛普森公式 (取2==M N ) 计算二重积分.5
.00
5
.00
dydx e x y ⎰
⎰
-
四、 实验结果
1.问题1:
计算结果如下表
表1问题1求解表
复合梯形求积公式:取12
10-,
n=,n为迭代次数,当迭代12次后,精度达到4 n-;
节点数为21=4095
复合辛普森求积公式:取10000
10-,节点数为
n=,n为区间数,取精度为4
n+=。
110001
2.问题2:
计算结果如下表
表2问题2求解表
龙贝格数值积分:给定被积函数0,被积上限3,精度为5
10-,龙贝格积分表中行的最大数目13,计算出龙贝格数值积分近似解为10.20759362。
3.问题3:
计算结果如下表
表3问题3求解表
高斯-勒让德积分公式:取3n = ,节点横坐标k x 取,n k A 取
585
999
,,,2n 阶导数e sin x x -,求得高斯-勒让德积分近似解为10.94840256。
4.问题4:
计算结果如下表
表4 问题4求解表
复合辛普森公式(计算二重积分):确定矩形域
(){}xy ,|00.5,00.5D x y x y =≤≤≤≤,求得复合辛普森公式的近似解为0.25525193。
五、实验体会或遇到问题
通过Matlab 程序可以更为简单的运用上课所学到的,数值积分。
附录
问题1:
experiment2_1.m:
clc;clear;
%复合梯形求积公式
[T,x1]=rctrap(@fun,eps,1,12);
%T近似值,x1节点12(迭代次数)
syms t;
fi=int(sqrt(t)*log(t),t,0,1);
Fs= double(fi);%精确值
wT= double(abs(fi-T));%相对误差
%复合辛普森求积公式
Q =comsimpson (@fun,eps,1,10000);
fi=int(sqrt(t)*log(t),t,0,1);
Fs= double(fi);%精确解
wQ= double(abs(fi-Q));%绝对误差
Fs%精确解
T(length(T))%复合梯形求积公式近似解
Q %复合辛普森公式求积公式近似解
rctrap.m:
function [T,xx]=rctrap(fun,a,b,m)
n=1;h=b-a;
T=zeros(1,m+1);
T(1)=h*(feval(fun,a)+feval(fun,b))/2;
xx=[];
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);
xx=[xx,x];
end
T(i+1)=T(i)/2+h*s;
end
T=T(1:m);
fun.m:
function y=fun(x)
y=sqrt(x)*log(x);%第1题函数
end
问题2
experiment2_2.m:
clc;clear;
F=inline('x*sqrt(1+x.^2)');
[RT,R,err,h]=romberg(F,0,3,1.e-5,13);
%RT,龙贝格积分表;R,近似值;err,误差估计;h,最小步长syms x ;
fi=int(x*sqrt(1+x.^2),x,0,3);
Fs=double(fi);%精确值
wR=double(abs(fi-R));%绝对误差
wR1= wR - err;
Fs%精确解
R%龙贝格积分近似解
romberg.m:
function [RT,R,wugu,h]=romberg(fun,a,b, wucha,m) n=1;h=b-a; wugu=1; x=a;k=0; RT=zeros(4,4);
RT(1,1)=h*(feval(fun,a)+feval(fun,b))/2;
while((wugu>wucha)&(k<m)|(k<4))
k=k+1; h=h/2; s=0;
for j=1:n
x=a+h*(2*j-1); s=s+feval(fun,x); end
RT(k+1,1)= RT(k,1)/2+h*s; n=2*n;
for i=1:k
RT(k+1,i+1)=((4^i)*RT(k+1,i)-RT(k,i))/(4^i-1); end
wugu=abs(RT(k+1,k)-RT(k+1,k+1));
end
R=RT(k+1,k+1);
问题3
experiment2_3.m:
clc;clear;
%n=3
X=[-sqrt(3/5),0,sqrt(3/5)];%节点
A=[5/9,8/9,5/9];%系数
a=1;b=3;
x=a:0.00001:b;
%计算得2n阶导数
fun2n=-exp(x).*sin(x);
[GL,Y,Rn]=Gauss (@fun,a,b,X,A,fun2n);
%GL,结果值;Rn截断误差
syms t
fi=int(exp(t).*sin(t),t,a,b);
Fs=double(fi);%精确解
wGL=double(abs(fi-GL));%绝对误差
Fs%精确解
GL%高斯-勒让德近似解
Gauss.m:
function [GL,Y,Rn]=Gauss (fun,a,b,X,A,fun2n)
n=length(X); n2=n*2; T=zeros(1,n);
T=((a+b)/2)+((b-a)/2)*X;
Y=feval(fun,T); GL=((b-a)/2)*sum(A.*Y);
sun=1; su2n=1; su2n1=1; wome=1;
syms x
for k=1:n
wome=wome*(x-X(k));
end
wome2= wome^2;Fr=int(wome2,x,-1,1);
for k=1:n2
su2n=su2n*k;
end
mfun2n =max(fun2n); Rn = Fr*mfun2n/su2n; fun.m:
function y=fun(x)
y=exp(x).*sin(x);%第3题函数
end
问题4
exeriment2_4.m:
clc;clear;
Q=dblquad(@fun,0,0.5,0,0.5)
fun.m:
function f=fun(x,y)
f=exp(y-x);%第4题
end。