您好,欢迎访问三七文档
计算方法实验指导书河北大学电子信息工程学院2007年9月1目录计算方法实验教学计划…………………………………………………………2实验一MATLAB基本操作……………………………………………………..3实验二插值法…………………………………………………………………..5实验三线性方程组的直接解法………………………………………………..7实验四线性方程组的迭代方法………………………………………………10实验五函数逼近与曲线拟合…………………………………………….….122计算方法实验教学计划指导教师:李昆仑学时数:10学时周4学时2次实验,共3周6次实验,第7—9教学周,每次实验2学时所用仪器设备:MATLAB7.0实验软件系统实验指导书:Matlab实验指导书自编实验参考书:《计算方法》,徐萃薇等编著,高等教育出版社,2003.7《数值分析与实验》,薛毅编著,北京工业大学出版社,2005.3实验项目:A,MATLAB基本操作内容:矩阵操作,基本数学函数,逻辑函数操作等;要求:完成一些基本练习题B,插值法内容:Lagrange插值、分段线性插值、三次样条在计算机上用MATLAB软件实现要求:完成一些基本练习题C,线性方程组的求解——直接解法内容:高斯消元法,列主元素法及其误差分析等在计算机上用MATLAB软件实现。要求:用实例在计算机上计算和作图。D,线性方程组的求解——迭代法内容:向量和矩阵的范数,雅可比迭代法,高斯-赛德尔迭代法及其收敛性等在计算机上用MATLAB软件实现。要求:用实例在计算机上计算。E,函数逼近与曲线拟合内容:曲线拟和与最小二乘方法在计算机上用MATLAB软件实现,并用实例在计算机上计算和作图。要求:用实例在计算机上计算。3实验一MATLAB基本操作一、实验目的1.熟悉MATLAB的使用方法及特点;学会建立MATLAB搜索路径;熟悉MATLAB工作空间、MATLAB集成环境、命令窗口;掌握MATLAB的通用命令、管理命令和函数、管理变量和工作空间的使用方法;2.掌握MATLAB基本操作及矩阵基础知识,包括:输入矩阵、矩阵的转置、矩阵元素求和、矩阵下际、矩阵连接、矩阵行列删除、矩阵产生和操作、逻辑和关系运算、操作符和特殊字符、基本矩阵和矩阵操作、基本矩阵和阵列;掌握特殊变量和常数;掌握基本数学函数。二、实验内容1.利用基本矩阵产生3x3和15x8的单位阵,全1阵,全0阵,均匀分布的随机阵([-1,1]之间),正态分布随机阵(方差4,均值1)2.利用diag()函数和rot90()产生下列矩阵:008204a=0-75b=050230708然后求解a阵的逆矩阵aa及b阵的特征值和对应特征向量,并利用reshape将aa阵变换成行向量。3.产生一均匀分布在(-5,5)随机阵(50x2),精确到小数点后一位。4.编程实现当α∈[-π,π],间隔为1o时,求解正弦和余弦的值,并利用plot()函数绘制正弦,余弦曲线。5.利用rand函数产生(0,1)间均匀分布的10x10随机矩阵a,然后统计a中大于等于0.6的元素个数。6.利用randn函数产生均值为0,方差为1的10x10正态分布随机阵,然后统计其中大于-0.5,小于0.5的元素个数。7.编程实现下表功能:4abb=0.5b0.5a1显示‘case1’显示‘case2’a=1显示‘case3’显示‘error’8.有一矩阵a,找出矩阵中其值大于1的元素,并将他们重新排列成列向量b。9.在一保定市区9月份平均气温变化测量矩阵temp_Baoding_sep中(48x30),存在有奇异值(大于42oC,小于0oC),编程实现删除奇异值所在的行。10.在给定的100x100矩阵中,删除整行内容全为0的行,删除整列内容全为0的列。三、实验要求要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。上机过程中由指导老师检查结果后方可做其他内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。5实验二插值法一、实验目的和要求(1)学会Langrange插值、Newton插值和Hermite插值等基本插值方法.(2)学会Matlab提供的插值函数的使用方法,会用这些函数解决实际问题(3)按照题目要求完成实验内容、写出相应的Matlab程序给出实验结果.(4)对实验结果进行分析讨论.(5)写出相应的实验报告.二、实验内容1.Lagrange插值公式.Matlab程序:按照Lagrange插值公式编写Matlab程序(函数名:Lagrange.m)functionyi=agrange(x,y,xi)%Lagrange插值多项式,其中,%x为向量,全部的插值节点;%y为向量,插值节点处的函数值;%xi为标量,被估计函数的自变量:%yi为xi处的函数估计值.n=length(x);m=1ength(y);%输入的插值点与它的函数值应有相同的个数ifn~=merror('ThelengthofXmustbeequal!');return;endp=zeros(1,n);fork=1:nt=ones(1,n);forj=1:n6ifj~=k%输入的插值节点必须互异ifabs(x(k)—x(j))epserror('theDATAiserroe!');return;endendp(k)=prod(t);endyi=sum(y.*p);练习1:已知11,42,93,利用Lagrange插值法求5的值。练习2:已知11,42,93,利用Newton插值法求5的值,并与上题的结果进行比较。三、实验要求要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。上机过程中由指导老师检查结果后方可做其他内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。7实验三线性方程组的直接解法一、实验目的(1)学会用Gauss消去法和Matab函数求线性方程组解。(2)学会对矩阵进行各种分解,如LU分解、Cholskey分解等,并研究相应的Matlab函数。(3)按照题日要求完成实验内容,写出相应的Matlab程序,给出实验结果.对实验结果进行分析讨论.写出相应的实验报告.二、实验内容1.按照Gauss列主元消去法的算法写出其Matlab程序(Gauss.m)。Matlab程序function[x,det,index]=Gauss(A,b))%求线性方程组的列主元Gauss消去法,其中,%A为方程组的系数矩阵;%b为方程组的右瑞项;%x为方程组的解;%det为系数矩阵A的行列式的值;%index为指标变量,index=0表示计算失败,index=1表示计算成功.[n,m]=size(A);nb=length(b);%当方程纽行与列的维数不相等时,停止计算,并输出出错信息.ifn~=merror('TherowsandcolumnsofmatrixAmustbeequal');returnend%当方程组与右瑞项的维数不匹配时,停止计算,并输出出错信息ifm~=nberror('ThecolumnsofAmustbeequalthelengthofb!');return;8end%开始计算,先赋初值index=1;det=1;x=zeros(n,1);fork=1:n-1%选主元a_max=0fori=k:nifabs(A(i,k))a_maxa_max=abs(A(i,k));r=i;endendifa_max1e-10index=0;return;end%交换两行ifrkforj=k:nz=A(k,j);A(k,j)=A(r,j);A(r,j)=z;end%消元过程fori=k+11:Hm=A(i,k)/A(k,L);fori=k十1:nm=A(i,k)/A(k,k);forj=k+1:nA(i,j)=A(i,j)-m*A(k,j);endb(i)=b(i)-m*b(k);enddet=det*A(k,k);9enddet=det*A(n,n);%回代过程ifabs(A(n,n))<1e-10index=0;return;endfork=n:-1:1forj=k+1:nb(k)=b(k)-A(k,j)*x(j)endx(k)=b(k)/A(k,k)end练习题1:用列主元法求解线性方程组123123145617801xxx注意:在Matlab函数中,求解线性方程组的命令非常简单。只需使用矩阵除法。如X=A\b,或利用矩阵的逆X=inv(A)*b。而求行列式的函数为det(A).请同学自行比较计算结果。练习题2:编写Matlab程序,求列矩阵的LU分解。123456780三、实验要求要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。上机过程中由指导老师检查结果后方可做其他内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。10实验四线性方程组的迭代解法一、实验目的(1)学会用Jacobi迭代法、Gauss-Seidel迭代法和超松弛迭代法求线性方程组解(2)学会对各种迭代法作收敛性分析,研究求方程组解的最优迭代方法.(3)按照题目要求完成实验内容,写出相应的Matlab程序,给出实验结果.(4)对实验结果进行分析讨论.(5)写出相应的实验报告.二、实验内容1.熟悉Jacobi迭代法,并编写Matlab程序matlab程序按照算法(Jacobi迭代法)编写Matlab程序(Jacobi.m)function[x,k,index]=Jacobi(A,b,ep,it_max)%求解线性方程组的Jacobi迭代法,其中,%A为方程组的系数矩阵;%b为方程组的右端项;%ep为精度要求,缺省值1e-5;%it_max为最大选代次数,缺省值100;%x为方程组的解;%k为迭代次数;%index为指标变量index=1表示迭代收敛到指定要求,%,index=0表示迭代失败.ifnargin4it_max=100;endifnargin3ep=1e-5;endn=length(A);k=0;x=zeros(n,1);y=x;index=1;whilelfori=1:ny(i)=b(i)forj=1:nifj=iy(i)=y(i)-A(i,j)*x(j);end11endifabs(A(i,i))1e-10|k==it_maxindex=0;return;endy(i)=y(i)/A(i,i);endifnorm(y-x,inf)epbreak;ende=y;k=k+1;end2.熟悉Gauss-Seidel迭代法,并编写Matlab程序3.练习练习题1.用Jacobi迭代法求方程组123430243313001424xxx的解。练习题2.用Gauss-Seidel迭代法求解上题的线性方程组,取(0)5(0,0,0),10Tx。三、实验要求要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。上机过程中由指导老师检查结果后方可做其他内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。12实验五函数逼近与数据拟合一、实验目的(1)学会函数的最佳平方逼近,理解最佳平方逼近的意义.(2)学会数据的最小二乘拟合.(3)按照题目要求完成实验内容,写出相应的Matlab程序,给出实验结果.(4)对实验结果进行分析讨论.(5)写出相应的实验报告.二、实验内容1.最小二乘算法Matlab程序算法:(1)输入数据(,)kkxy和权系数(),1,2,,.kxkm选择函数逼近系0{()}kkx。(2)求解法方程组。(3)求出最小二乘逼近。Matlab程序:编写成Matlab程序(函数名:square_least.m)计算数据最小二乘拟合系数.functionS=square_least(x,y,n,w)%数据的最小二乘拟合,其中%x,y为数据
本文标题:计算方法实验指导书
链接地址:https://www.777doc.com/doc-2097351 .html