您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数值计算A上机实验指导书
数值计算A实验指导书实验一高斯消去法1.1实验目的①掌握高斯消去法的基本思路和迭代步骤;②培养编程与上机调试能力。1.2算法描述1.2.1高斯消去法基本思路。设有方程组Axb,设A是可逆矩阵。高斯消去法的基本思想就是僵局真的初等行变换作用于方程组的增广矩阵BAb,将其中的A变换成一个上三角矩阵,然后求解这个三角形方程组。1.2.2列主元高斯消去法计算步骤将方程组用增广矩阵(1)ijnnBAba表示。步骤1:消元过程,对1,2,,1kn(1)选主元,找,1,,kikkn使得,maxkikikkinaa(2)如果,0kika,则矩阵A奇异,程序结束;否则执行(3)。(3)如果kik,则交换第k行与第ki行对应元素位置,kkjijaa,,,1jkn。(4)消元,对,,ikn,计算/,ikikkklaa对1,,1jkn,计算.ijijikkjaala步骤2:回代过程:(1)若0,nna则矩阵奇异,程序结束;否则执行(2)。(2),1/;nnnnnxaa对1,,2,1in,计算,11/niinijjiijixaaxa1.3实验要求用选主元素法和高斯消去法两种方法解方程组。1.4实验内容计算书上的习题实验二解线性方程组的迭代法2.1实验目的①掌握解线性方程组的雅可比迭代和高斯-塞德尔迭代算法;②培养编程与上机调试能力.2.2算法步骤2.2.1迭代法的基本思想根据方程组Axb设计出一个迭代公式,然后将任意选取的一初始向量(0)x代入迭代公式,求出(1)x,再以(1)x代入同一迭代公式,求出(2)x,如此反复进行,得到向量序列(){}kx.当(){}kx收敛时,其极限即为原方程组的解.2.2.2雅可比(Jacobi)迭代法解方程组设方程组Axb的系数矩阵对角线元素0(1,2,...,)iiain,M为最大迭代次数,为容许误差.雅可比(Jacobi)迭代法解方程组算法步骤如下:①取初始向量(0)(0)(0)12(,,...,)Tnxxxx,令0k.②对1,2,...,in,计算(1)()11()nkkiiijjjiijixbaxa.③如果(1)()1nkkiiixx,则输出(1)kx,结束;否则执行④④如果kM,则不收敛,终止程序;否则1kk,转②2.2.3高斯-塞德尔(Gauss-Seidel)、SOR迭代法在雅可比(Jacobi)迭代法中,如果当新的分量求出后,马上用它来代替旧的分量,则可能会更快地接近方程组的准确解.基于这种设想构造的迭代公式称为高斯-塞德尔(Gauss-Seidel)迭代法.算法可相应地从雅可比(Jacobi)迭代法改造得到.2.3实验要求:(1)选择一种计算机语言(Matlab)设计出雅可比(Jacobi)Gauss-Seidel、SOR迭代法,迭代法的算法程序,并且选择不同的迭代次数,观察输出结果;(2)利用Matlab求方程组2.4思考:①判别迭代法收敛的充分必要条件及充分条件是什么?②雅可比(Jacobi)迭代法和高斯-塞德尔(Gauss-Seidel)迭代法收敛性的各种判别条件是什么?2.5实验内容计算书上的习题实验三矩阵特征值问题计算3.1实验目的①掌握求矩阵的特征值和主特征向量的幂法;②培养编程与上机调试能力.3.2算法描述3.2.1幂法3.2.2Jacobi方法3.3实验要求(1)选择一种计算机语言设计出幂法求主特征值和相应特征向量的程序,并且选择不同的初值,观察所需的迭代次数和迭代结果.(2)利用Matlab求特征值和特征向量调用格式1:eig(A)%得到特征值列向量调用格式2:[,]()DXeigA,其中D为由特征列向量构成的方阵,X为由特征值构成的对角阵.%得到特征值和所对应的特征向量3.4实验内容计算书上的习题3.5思考幂法收敛速度取决于什么?怎样加速收敛?实验四插值法4.1实验目的①掌握插值法的基本思路和步骤;②培养编程与上机调试能力。4.2算法描述4.2.1Lagrange插值4.2.2牛顿插值法4.2.3三次样条插值4.3实验要求:用Matlab和插值中的某种具体算法编写代码并执行,完成解决具体问题。4.4实验内容计算书上的习题MatlabSplineTools实验五最小二乘法5.1实验目的①掌握最小二乘法的基本思路和拟合步骤;②培养编程与上机调试能力。5.2算法描述5.2.1最小二乘法基本思路已知数据对,1,2,,jjxyjn,求多项式0()()miiipxaxmn使得20110(,,,)nminijjjiaaaaxy为最小,这就是一个最小二乘问题。5.2.3最小二乘法计算步骤用线性函数()pxabx为例,拟合给定数据,,1,2,,iixyim。算法描述:步骤1:输入m值,及,,1,2,,iixyim。步骤2:建立法方程组TAAXAY。步骤3:解法方程组。步骤4:输出()pxabx。5.3实验要求用Matlab和插值中的某种具体算法编写代码并执行,完成解决具体问题。5.4实验内容计算书上的习题Polyfit实验六复化求积公式与龙贝格算法6.1实验目的①掌握复化求积公式与龙贝格算法的基本思路和迭代步骤;②培养编程与上机调试能力。6.2算法描述6.2.1复化梯形、Simpson、Cotes公式6.2.2龙贝格算法基本思路龙贝格算法利用外推法,提高了计算精度,加快了收敛速度。,11,1,,11,2,3,.41kjkjkjkjjRRRRk对每一个,kj从2做到k,一直做到,1,1kkkkRR小于给定的精度是停止计算。其中,1kkhRTf(复化梯度求积公式),12kkbah6.2.3龙贝格算法计算步骤步骤1:输入区间端点,ab,精度控制值e,循环次数M,定义函数()fx,取1n,;hba1,1()()/2Rhfafb步骤2:for2ktoM22,11,1111,,1,11,1,1,1{21/22/41}kkkkkijkjkjkjkjkkkkRRhfaihforjtokRRRRifRRe退出循环步骤3:数据积分近似值,kkR。6.3实验内容用龙贝格算法计算:10sinxIdxx实验七常微分方程数值解法7.1实验目的①掌握常微分方程数值解的常用算法;②培养编程与上机调试能力.7.2算法描述7.2.1改进欧拉法求解'0()(,)()()yxfxyaxbyay对给定的(,)fxy,用改进的欧拉公式1111()[()()]2nnnnnnnnnnyyhfxyhyyfxyfxy求解常微分方程初值问题的解.7.2.2四阶龙格-库塔法对上述给定的(,)fxy,用四阶龙格-库塔法求解常微分方程初值问题112341213243(22)6(,)11(,)2211(,)22(,)nnnnnnnnnnhyykkkkkfxykfxhyhkkfxhyhkkfxhyhk7.2.3常微分边值问题的差分解法7.3实验题目课后习题7.4实验要求(1)选择一种计算机语言设计出改进欧拉法和四阶龙格-库塔法方法求解常微分方程初值、边值问题的程序,观察运行结果.(2)利用Matlab求解常微分方程初值问题函数dsolve()用于求解微分方程.Dy表示:dy/dt(t为缺省的自变量),Dny表示y对t的n阶导数.Matlab6.5环境下操作如下:y=dsolve('Dy=y*y','y(0)=1')%求解题目1y=dsolve('Dy=y/t','y(2.0)=1')%求解题目2(3)ode23,ode45(4)利用最小二乘法拟合通过改进欧拉法求出微分方程的一系列数值解的近似函数方程.并利用Matlab的绘图功能画出函数的曲线。实验八非线性方程求根8.1实验目的:①掌握二分法、牛顿迭代法等常用的非线性方程迭代算法;②培养编程与上机调试能力.8.2算法步骤:8.2.1二分法8.2.2牛顿迭代法8.3实验题目及参考结果:题目求方程32()330fxxxx在1.5附近的根.原方程的根为1.732051x8.4实验要求:(1)选择一种计算机语言设计出二分法和牛顿法的程序,并且选择不同的初值,观察所需的迭代次数和迭代结果;(2)分析二分法和牛顿法在非线性方程求根中的优缺点和收敛速度二分法简单易行,但只有线性收敛,且仅限于求实根;牛顿法也是一种简单的迭代法,具有二阶收敛速度(在单根邻近处)的特点,但对初值的选择比较苛刻,否则可能不收敛.(3)Matlab6.1环境下操作如下:f=[11-3-3];roots(f)%多项式求根fx='x^3+x^2-3*x-3';fzero(fx,1.5)%非线性方程式的实根8.5思考:(1)怎样比较迭代法收敛的快慢?何为收敛阶数?(2)如何加速迭代序列的收敛速度?埃特肯加速法的处理思想是什么?它具有什么优点?
本文标题:数值计算A上机实验指导书
链接地址:https://www.777doc.com/doc-2424885 .html