课程实验报告
专业年级
课程名称数值分析
指导教师
学生姓名
学号
实验日期
实验地点
实验成绩
教务处制
2013 年 6 月 20 日
实验名称: Lagrange插值(实验一)
实验目的:
掌握Lagrange插值数值算法,能够根据给定的函数值表达求出插值多项式和函数在某一点的近似值。
实验准备:
1. 在开始本实验之前,请回顾教科书的相关内容;
2. 需要一台准备安装Windows XP Professional操作系统和装有数学软件的计算机。
实验内容及要求
已知数据如下:
要求:
试用Lagrange插值多项式求时的函数近似值.
实验过程:
编写Matlab函数M文件Lagrange如下:
function yy=lagrange(x,y,xi)
m=length(x); n=length(y);
if m~=n,error('向量x与y的长度必须一致');end
for k=1:length(xi)
s=0;
for i=1:m
z=1;
for j=1:n
if j~=i
z=z*(xi(k)-x(j))/(x(i)-x(j));
end
end
s=s+z*y(i);
end
yy=s
end
在命令窗口调用函数M文件lagrange,输出结果如下:
>>x=[0.56160, 0.56280, 0.56401, 0.56521];
>>y=[0.82741, 0.82659, 0.82577, 0.82495];
>>xi=[0.5626, 0.5635, 0.5645];
>>yi= lagrange (x,y,xi)
yi=
0.8628 0.8261 0.8254
实验总结(由学生填写): 通过这次实验,使我掌握了Lagrange插值数值算法,能够根据给定的函数值表达求出插值多项式和函数在某一点的近似值;并学会了相关软件的应用。
教师对本次实验的评价(下面的表格由教师填写):
实验名称: 曲线拟合的最小二乘方法(实验二)
实验目的:
掌握最小二乘方法,并能根据给定数据求其最小二乘一次或二次多项式,然后进行曲线拟合。
实验准备:
1. 在开始本实验之前,请回顾教科书的相关内容;
2. 需要一台准备安装Windows XP Professional操作系统和装有VC++6.0的计算机。
实验内容及要求
炼钢是个氧化脱碳的过程,钢液含碳量的多少直接影响冶炼时间的长短,下表是某平炉的生产记录,表中为实验次数,为全部炉料熔化完毕时钢液的含碳量,为熔化完毕至出钢所需的冶炼时间(以分为单位).
将所数据通过图示方法绘在坐标纸上,观察数据点的分布情况,然后进行曲线拟合.
实验过程:
编写Matlab命令文件如下:
function t=zxecnh(x,y)
x=[-1.00 -0.75 -0.50 -0.25 0];
y=[-0.2209 0.3295 0.8826 1.4392 2.0003];
syms sumx sumy sumxy sumx2;
sumx=0
sumy=0
sumxy=0
sumx2=0
for i=1:5
sumx=sumx+x(1,i);
sumy=sumy+y(1,i);
sumxy=sumxy+(x(1,i))*(y(1,i));
sumx2=sumx2+(x(1,i))*(x(1,i));
end
sumx
sumy
sumxy
sumx2
b=(sumy*sumx-sumxy*5)/(sumx*sumx-sumx2*5)
a=(sumy-b*sumx)/5
scatter(x,y)
hold on
plot(x,a+b*x)
在命令窗口调用函数M文件zxecnh,输出结果如下:
b = 2.2208
a = 1.9966
实验总结(由学生填写):在本次实验中,通过对例题的实际分析操作,掌握了最小二乘法,并可以根据给定数据求最小二乘一次或二次多项式,然后进行曲线拟合。通过本次试验,也看到了数学与数学软件在实际生活中的应用。
教师对本次实验的评价(下面的表格由教师填写):
实验名称: Romberg积分法(实验三)
实验目的:
掌握Romberg算法,并能根据给定的精度要求计算定积分。
实验准备:
1. 在开始本实验之前,请回顾教科书的相关内容;
2. 需要一台准备安装Windows XP Professional操作系统和装有VC++6.0的计算机。
实验内容及要求
用Romberg法求函数积分,精度为.
实验过程:
编写函数M文件Romberg如下:
funciton t=Romberg(fname,a,b,e)%Rom
%Romberg法求函数的积分
%fname是被积函数,a是上限,b是下限,e为精度(默认1e-4)
If nargin<4,e=1e-4;
end
i=1; j=1; h=b-a;
T(i,1)=h/2*(feval(fname,a)+feval(fname,b));
T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2;
T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/ (4^j-1);
while abs(T(i+1,i+1) -T(i,i))>e
i=i+1; h=h/2;
T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2;
For j=1:i
T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/ (4^j-1);
end
end
T
t=T(i+1,j+1)
>>format long;Romberg(inline( 'sin(x)./x'),eps,1,0.5e-6);format short;
T=
t=0.94608307038722
实验总结(由学生填写):通过本次试验,我学会了用Romberg法求函数积分,从而掌握了Romberg算法,并能根据给定的精度要求计算定积分。也加深了对知识点的掌握。
教师对本次实验的评价(下面的表格由教师填写):
实验名称: Newton方法(实验四)
实验目的:
掌握Newton迭代算法,能够根据所给方程求出在某一点附近的根。
实验准备:
1. 在开始本实验之前,请回顾教科书的相关内容;
2. 需要一台准备安装Windows XP Professional操作系统和装有VC++6.0的计算机。
实验内容及要求
公元1225年,Lenardo宣布他求得方程
的一个根.当时颇为轰动,但无人知道他是用什么方法得到的.现在,请你试试用Newton迭代法求解这个结果.
实验过程:
编写Matlab函数M文件Newton如下:
Function x= Newton(fname,dfname,x0,e,N)
%用途:Newton迭代法解非线性方程f(x)=0
%fname和dfname分别表示f(x)及其导数函数的M函数句柄或内嵌函数表达式,
%x0为迭代初值,e为精度(默认值le-4),
%x0为返回数值解,并显示计算过程,设置迭代次数上限N以防发散(默认500次)
If nargin<5,N=500;end
If nargin<4,e=le-4;end
X=x0;x0=x+2﹡e;k=0;
Fprintf(‘It.no=%2d x%[2d]=%12.9f\n`,k,k,x)
While abs(x0-x)>e£k<N
K=K+1
X0=x;x=x0-feval(fname,x0)/feval(dfname,x0);
Fprintf(It.no=%2d x[%2d]=%12.9f\n`,k,k,x)
End
If k==N,fprintf(`已达到迭代次数上限`);end
在命令窗口编写内嵌函数表达式,并调用函数M文件Newton:
>>fun=inline(,x^3+2﹡x^2+10﹡x-20`);
>>dfun=inline( 3﹡x^2+4﹡x+10);
>>Newton(fun,dfun,1.5,0.5e-6);
It.no=0 x[0]=1.500000000
It.no=1 x[1]=1.373626374
It.no=2 x[2]=1.368814820
It.no=3 x[3]=1.368808108
It.no=4 x[4]=1.368808108
五、弦截法
例4.15 用弦截法求方程f(x)=x(x+1)2-1=0在0.4附近的一个实根.初始值x0=0.4,x1=0.6,精确指4位有效数字.
编写Matlab函数M文件XianjieMethod和chap4-fun如下:
Function f=XianjieMethod(x0,x1)
X2=x1-chap4-fun(x1)*(x1-x0)/chap4—fun(x1)—chap—fun(x0));
Eps=le—4;
N==0;
rprintf('迭代次数 x—n feval(x—n)\n'')
rprintf('n=%3.0f x--%d=%10.5f %10.6e\n',n,n,xx0,chap4—fun(x0))
while abs(x1—x0)>eps&(n<600)
x0=x1;x1=x2;
x2=x1—chap4—fun(x1)*(x1-x0)/(chap4—fun(x1)—chap4-fun(x0));
n=n+1
fprintf('n=%3.0f x--%10.5f %10.6e\n',n,n,x0,chap4—fun(x0))
end
fprintf('\n迭代次数n=%3.0f x﹡=%10.5f',nx0)
function f=chap4—fun(x)
f=x*(x+1)^2-1;
取x0=0.4, x1=0.6在命令窗口调用函数M文件XianjieMeethod输出结果如下:
>>XianjieMethod(0.4,0.6)
迭代次数 x-n feval(x-n)
n=0 x-0=0.40000 -2.160000e-001
n=1 x-1=0.60000 5.360000e-001
n=2 x-2=0.45745 -2.831381e-002
n=3 x-3=0.46460 -3.410914e-003
n=4 x-4=0.465558 2.698819e-005
迭代次数n=4 x*=0.4655
实验总结(由学生填写): 由于在本次实验课前对课本经行回顾,又通过实验操作,使我能够熟练掌握Newton迭代算法,并能够根据所给方程求出某一点附近的根。
教师对本次实验的评价(下面的表格由教师填写):
实验名称: 列主元的高斯消去法(实验五)
实验目的:
掌握列主元的高斯消去法思想,能够利用列主元的高斯消去法求解任意阶数的线性方程组。
实验准备:
1. 在开始本实验之前,请回顾教科书的相关内容;
2. 需要一台准备安装Windows XP Professional操作系统和装有VC++6.0的计算机。
实验内容及要求
解下列方程组
实验过程:
编写Matlab命令M文件chap3_1 如下:
Clear
Fprintf(‘增广矩阵’)
A=[0.792,0.81,0.9,0.6867;1,1,1,0.8338;1.331,1.21,1,1,1.000]
%输入增广距阵
%第一次选主元,第三行和第一行交换
fprintf(’第一次选主元后的增广距阵’)
tempo=A(3,:);A(3,:)= A(1,:);A(1,:)=tampo;A
%第一次消元
Fprintf(‘第一次消元后的增广距阵’)
A(2,:)= A(2,:)- A(1,:)* A(2,1)/ A(1,1);
A(3,:)= A(3,:)- A(1,:)* A(3,1)/ A(1,1);A
%第二次选主元,第三行和第二行交换
Fprintf(‘第二次消元后的增广距阵’)
tempo=A(3,:);A(3,:)= A(2,:);A(2,:)=tampo
%第二次消元
Fprintf(‘第二次消元后的增广距阵’)
A(3,:)= A(3,:)- A(2,:)* A(3,2)/ A(2,2);A
%回代求解
Fprintf(‘回代求解’)
x(3)=A(3,4)/A(3,3);
x(2)=(A(2.4)-A(2,3)*x(3))/A(2,2);
x(1)=(A(1,4)-A(1,2,3)*x(2:3)’)/A(1,1)
x
在命令窗口调用M文件chap3_1
>> chap3_1
增广距阵
A=
0.7290 0.8100 0.9000 0.6867
1.0000 1.0000 1.0000 0.8338
1.3310 1.2100 1.1000 1.0000
第一次选主元后的增广距阵
A=
1.3310 1.2100 1.1000 1.0000
1.0000 1.0000 1.0000 0.8338
0.7290 0.8100 0.9000 0.6867
第一次消元后的增广距阵
A=
1.3310 1.2100 1.1000 1.0000
0 0.0909 0.1763 0.0825
0 0.1473 0.2975 0.1390
第二次选主元后的增广距阵
A=
1.3310 1.2100 1.1000 1.0000
0 0.1473 0.2975 0.1390
0 0.0909 0.1763 0.0825
第二次消元后的增广距阵
A=
1.3310 1.2100 1.1000 1.0000
0 0.1473 0.2975 0.1390
0 0 -0.0101 -0.0033
回带求解
X=
0.2245 0.2814 0.3279
实验总结(由学生填写): 通过本次的实验,我掌握了列主元的高斯消去法思想,并能够利用列主元的高斯消去法求解任意阶数的线性方程组;通过这五次实验也熟练了对相关数学软件的应用,体会到了数值分析的一些数学思想。
教师对本次实验的评价(下面的表格由教师填写):
实 验 报 告 (一)
— 1 —
— 2 —
— 3 —
— 4 —
实验报告一题目非线性方程求解摘要非线性方程的解析解通常很难给出因此线性方程的数值解法就尤为重要本实验采用两种常见的求解方法二分法和…
数值分析实验报告册课程实验报告专业年级课程名称数值分析指导教师学生姓名学号实验日期实验地点实验成绩教务处制20xx年6月20日实验…
数值分析报告运用Matlab求解非线性方程的根学院专业班级姓名学号数值分析报告1目的掌握非线性方程求根的方法并选取实例运用MATL…
实验报告一题目非线性方程求解摘要非线性方程的解析解通常很难给出因此线性方程的数值解法就尤为重要本实验采用两种常见的求解方法二分法和…
数值分析上机报告姓名学号专业联系电话Matlab是一种用于算法开发本次数值分析上机实习采用Matlab数学软件数据可视化数据分析以…
数值分析实验报告册实验名称Lagrange插值实验一实验目的掌握Lagrange插值数值算法能够根据给定的函数值表达求出插值多项式…
重庆科技学院数理学院计算方法课程实验报告一重庆科技学院数理学院计算方法课程实验报告二重庆科技学院数理学院计算方法课程实验报告三重庆…
实验报告一题目非线性方程求解摘要非线性方程的解析解通常很难给出因此线性方程的数值解法就尤为重要本实验采用两种常见的求解方法二分法和…