2022年数值分析实验学习课程指导书

上传人:工**** 文档编号:567312552 上传时间:2024-07-19 格式:PDF 页数:38 大小:423.94KB
返回 下载 相关 举报
2022年数值分析实验学习课程指导书_第1页
第1页 / 共38页
2022年数值分析实验学习课程指导书_第2页
第2页 / 共38页
2022年数值分析实验学习课程指导书_第3页
第3页 / 共38页
2022年数值分析实验学习课程指导书_第4页
第4页 / 共38页
2022年数值分析实验学习课程指导书_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《2022年数值分析实验学习课程指导书》由会员分享,可在线阅读,更多相关《2022年数值分析实验学习课程指导书(38页珍藏版)》请在金锄头文库上搜索。

1、数值分析课程实验指导书太原科技大学应用科学学院数学系精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 38 页目录前言1第一部分数值实验报告格式1第二部分数值实验报告范例2第三部分数值实验6数值实验一6 数值实验二8数值实验三10数值实验四12数值实验五13数值实验六16 数值实验七17 第四部分MATLAB入门19精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 38 页前言该实验指导书是数值分析课程的配套数值实验教材。数值分析是理工科大学本科生与硕士研究生的必修课程,学习本课程的

2、最终目的,是用计算机解决科学和工程实际中的数值计算问题,因此熟练地在计算机上实现算法是必备的基本技能。数值实验是数值分析课程中不可缺少的部分,利用计算机进行数值实验,以消化巩固所学的内容,增加对算法的可靠性、收敛性、稳定性及效率的感性认识,体会和重视算法在计算机上实验时可能出现的问题。学生通过选择算法、编写程序、分析数值结果、写数值实验报告等环节的综合训练,逐步掌握数值实验的方法和技巧,获得各方面的数值计算经验,培养学生运用所学算法解决实际问题和进行理论分析的能力。该实验指导书由王希云、刘素梅、王欣洁、李晓峰等老师编写。第一部分数值实验报告格式一个完整的实验,应包括数据准备、理论基础、实验内容

3、及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下:一、实验名称实验者可根据报告形式需要适当写出。二、实验目的及要求首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 38 页三、算法描述(实验原理与基础理论)数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详

4、尽列出。四、实验内容实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备。五、程序流程图画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题。六、实验结果实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格形式列出,较为简单的结果可以与实验结果分析合并出现。七、实验结果分析(对算法的理解与分析,包括改进与建议)实验结果分析是数值实验的重要环节,只有对实验结果认真分析,才能对实验目的、实验方法进一步理解,对实验的重要性充分认识,明确数值分析的实用范围及其优缺点。第二部分数值实验报告范例为了更好地做

5、好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考。数值实验报告一、实验名称误差传播与算法稳定性精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 38 页二、实验目的1理解数值计算稳定性的概念。2了解数值计算方法的必要性。3体会数值计算的收敛性与收敛速度。三、实验内容计算dxxxInn1010,1,2,10nL四、算法描述由dxxxInn1010,知dxxxInn101110则ndxxdxxxxIInnnnn11010101011011可得递推关系 1nI1101nIn,10,2, 1n 2)1(1011nnInI,1 ,9

6、 ,10n下面分别以1,2 递推关系求解方案 1 nI1101nIn,10,2 ,1n当0n时,dxxI1001011011 1.1 , 递推公式为1. 1ln10, 2, 1,10101InInInn(1)方案 2 )1(1011nnInI,1 ,9 ,10n精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 38 页当10x时,nnnxxxx10110111则dxxdxxxdxxnnn10110111101010即)1(101)1(111nInn取递推初值) 110(22021)110(101)110(1112110I递推公式为) 11

7、0(220211 , 9,10),1(101101InInInn(2)取递推公式(1)中的初值095310. 01 .1ln0I,得095310.010,2, 1,10101InInInn取递推公式(2)中的初值008678.010I,得008678. 01 ,9 ,10),1(101101InInInn五、程序流程图由于实验方案明显、简单,实现步骤及流程图省略。六、实验结果计算结果如下:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 38 页n ) 1(nI)2(*nI0 1 2 3 4 5 6 7 8 9 10 0.095310 0

8、.046900 0.031000 0.023333 0.016667 0.033333 -0.166667 1.809524 0.095310 0.046898 0.031018 0.023153 0.018465 0.015353 0.013138 0.011481 0.010188 0.009232 0.008678 七、实验结果分析由递推公式( 1)知当1.1ln0I时,nI应当为精确解,递推公式的每一步都没有误差的取舍, 但计算结果033333. 05I016667.04I,6I出现负值。 由此看出, 当n较大时,用递推公式(1)中的nI近似nI是不正确的。主要原因是初值095310.

9、 00I不是精确值,设有误差)(0Ie,由递推公式(1)知)(10)(1nnIeIe则有)()10()(100)(10)(021IeIeIeIennnn误差)(nIe随n的增大而迅速增加,增加到)(0Ie的n)10(倍。由此可见,递推公式计精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 38 页算的误差不仅取决于初值的误差,公式的精确性,还依赖于误差的传递即递推计算的稳定性。由递推公式( 2)知008678.010I,nI为估计值,并不精确,有12101)(10Ie,而由)(101)(*1nnIeIe得)()101()(*0nnIeIe

10、误差)(*0Ie随递推公式逐步缩小。综上所述, 在递推计算中, 数值计算方法是非常重要的,误差估计、误差传播及递推计算的稳定性都会直接影响递推结果。第三部分数值实验本部分列出了七个数值实验类型,每个数值实验都应在计算机上实现或演示,由实验者独立编程实现。要求 :(1) 用 MATLAB 语言或其他算法语言编程,使之尽量具有通用性。(2) 上机前充分准备,复习有关算法,画出程序流程图。(3) 完成实验后写出实验报告。(4) 编程语言的种类、运行环境及程序清单以附录形式给出。以下分别列出七个数值实验的内容。数值实验一1 误差传播与算法稳定性实验目的: 体会稳定性在选择算法中的地位。误差扩张的算法是

11、不稳定的,是我们所不期望的;误差衰竭的算法是稳定的,是我们努力寻求的,这是贯穿本课程的目标。实验内容: 计算1,2,n,110dxexExnn精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 38 页算法一:eE11,2,3,n,11nnnEE算法二:0NE,,3,22,-N1,-Nn,11nEEnn实验要求:(1) 分别用算法一、算法二采用6 位有效数字计算nE,请判断哪种算法能给出更精确的结果。(2) 请从理论上证明你实验得出的结果,解释实验的结果。设算法一中1E的计算误差为e1,由1E递推计算到nE的误差为en;算法二中NE的计算误

12、差为N,由NE向前递推计算到nE(Nn)的误差为n。如果在上述两种算法中都假定后面的计算不再引入其他误差,试给出ne与1e的关系和n与N关系。(3) 算法一中通常1e会很小,当n 增大时,ne的变化趋势如何?算法二中N通常相对比较大,当n 减小时,误差n又是如何传播的?即比较两个算法,当某一步产生误差后,该误差对后面的影响是衰减还是扩张的。(4) 通过理论分析与计算实验,针对两个算法的稳定性,给出你的结论。2 不同方案收敛速度的比较实验目的: 通过实验体会数值计算中算法选择的重要地位。实验内容: 三种求 2 的算法比较。方案一:利用级数11) 1(.41312112lnkkk,设nkknkS1

13、1)1(,则nS2ln精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 38 页方案二:对上述nkknkS11) 1(,按)3,4,(n2)s(2121nnnnnnnssssSs生成新数列ns,则ns2ln方案三:利用级数143221241231221211kkk设nkknkS121,则nS2ln实验要求:分别用三种方案求出2ln的近似值, 要求51021,观察比较三种计算方案的收敛速度。在MATLAB 命令窗口输入log(2) 求解,并与三种方案计算的结果进行比较。数值实验二1. 解线性方程组的列主元素高斯消去法和LU分解法实验目的:

14、通过数值实验,从中体会解线性方程组选主元的必要性和LU分解法的优点,以及方程组系数矩阵和右端向量的微小变化对解向量的影响。实验内容: 解下列两个线性方程组(1)11134.981.4987.023.116.427.199.103.601.3321xxx(2)15900001.582012151526099999. 23107104321xxxx精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 38 页实验要求:(1) 用你熟悉的算法语言编写程序用列主元高斯消去法和LU分解求解上述两个方程组,输出Ax=b 中矩阵 A及向量 b, A=LU

15、 分解的 L 及 U,detA 及解向量x. (2) 将方程组( 1)中系数 3.01 改为 3.00 ,0.987 改为 0.990 ,用列主元高斯消去法求解变换后的方程组,输出列主元行交换次序,解向量x 及 detA ,并与( 1)中结果比较。(3) 将方程组( 2)中的 2.099999 改为 2.1 ,5.900001 改为 5.9 ,用列主元高斯消去法求解变换后的方程组,输出解向量x 及 detA,并与( 1)中的结果比较。(4)用 MATLAB 的内部函数inv ( 矩阵的逆 ) 求出系数矩阵的逆矩阵,再输入命令x=inv(A)*b,即可求出上述各个方程组的解,并与列主元高斯消去法

16、和LU分解法求出的解进行比较,体会选主元的方法具有良好的数值稳定性。用MATLAB 的内部函数det 求出系数行列式的值,并与(1) 、 (2) 、 (3)中输出的系数行列式的值进行比较。2.研究解线性方程组bAx迭代法收敛速度实验目的: 认识迭代法收敛的含义以及迭代法初值和方程组系数矩阵性质对收敛速度的影响。实验内容: 用迭代法求解bAx,其中2020RA为五对角矩阵2020113241113224111134224111134224111342211342A实验要求:(1)选取不同的初始向量X)0(及右端向量b,给定迭代误差要求,用 Jacobi 迭代法精选学习资料 - - - - - -

17、 - - - 名师归纳总结 - - - - - - -第 11 页,共 38 页和 Gauss-Seidel迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。(2)用 SOR迭代法求上述方程组的解,松驰系数取21的不同值,在5)1()(10kkXX时停止迭代,记录迭代次数,分析计算结果与松驰系数的关系并得出你的结论。(3)用 MATLAB 的内部函数inv求出系数矩阵的逆矩阵,再输入命令x=inv(A)*b,即可求出上述各个方程组的解,并与上述方法求出的解进行比较。3病态线性方程组的求解实验目的: 通过实验体会病态线性方程组的性态,了解求解病态线性方程组的方

18、法。实验内容: 考虑方程组bHx的求解,其中系数矩阵H为 Hilbert阵,njijihhHjinnji,2, 1,11,)(,这是一个著名的病态问题。通过首先给定解 (例如取各个分量均为1)再计算出右端的办法给出确定的问题。实验要求:( 1)选择问题的维数为6,分别用列主元Gauss 消去法、Jacobi迭代法、Gauss-Seidel迭代法和SOR迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?(2) 逐步增大问题的维数,仍然用上述方法来解它们,计算的结果如何?计算的结果说明了什么?分析产生结果的原因。(3) 讨论病态方程组的解法,并求解维数为6、10、100 的上

19、述方程组。数值实验三1 矩阵特征值的求法实验目的: 通过实验进一步熟悉掌握求矩阵特征值的各种方法的使用与比较。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 38 页实验内容: 给定矩阵1112111111222121A311206012B4114114114114114C实验要求:(1) 分别用幂法、反幂法、雅可比方法编写程序求矩阵A、B、C的按模最大特征值、按模最小特征值、全部特征值(要求误差105) 。(2) 用 MATLAB 的内部函数eig 求矩阵 A、B、C的全部特征值,并与(1)的结果比较。2 用 QR算法求矩阵的特征值

20、实验目的: 通过实验进一步熟悉掌握求矩阵特征值的QR方法及原理。实验内容: 给定矩阵111132126A, 0100098200876307654465432H实验要求:(1) 根据 QR算法原理编写程序求矩阵A及矩阵H的全部特征值(要求误差105) 。(2) 直接用 MATLAB 的内部函数eig 求矩阵A及矩阵H的全部特征值,并与(1)的结果比较。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 38 页数值实验四1迭代函数对收敛性的影响实验目的: 初步了解非线性方程的简单迭代法及其收敛性,体会迭代函数对收敛性的影响,知道当迭代函数

21、满足什么条件时,迭代法收敛。实验内容: 用简单迭代法求方程012)(3xxxf的根。方案一:化012)(3xxxf为等价方程)(213xxx方案二:化012)(3xxxf为等价方程)(123xxx实验要求:(1)分别对方案一、方案二取初值00x,迭代 10 次,观察其计算值,并加以分析。(2)用 MATLAB 内部函数solve 直接求出方程的所有根,并与(1)的结果进行比较。2. 初值的选取对迭代法的影响实验目的: 通过具体的数值实验,体会选取不同的初值对同一迭代法的影响。实验内容: 用牛顿迭代法求方程013xx在x=1.5 附近的根。实验要求:(1) 对牛顿迭代公式:131231kkkkk

22、xxxxx, 编写程序进行实验, 分别取00x,5.10x迭代 10 次,观察比较其计算值,并分析原因。(2)用 MATLAB 内部函数solve 直接求出方程的所有根,并与(1)的结果进行比较。3 收敛性与收敛速度的比较实验目的: 通过用不同迭代法解同一非线性方程,比较各种方法的收敛性与收敛速度。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 38 页实验内容: 求解非线性方程0232xexx的根,准确到106。实验要求:(1) 用你自己设计的一种线性收敛的迭代法求方程的根,然后用斯蒂芬森加速迭代计算。输出迭代初值、各次迭代值及迭代

23、次数。(2)用牛顿迭代法求方程的根,输出迭代初值、各次迭代值及迭代次数,并与(1)的结果比较。(3)用 MATLAB 内部函数solve 直接求出方程的所有根,并与(1) 、 (2)的结果进行比较。数值实验五1 观察直接利用拉格朗日插值多项式的病态性实验目的: 如果直接利用插值多项式的定义,即ininiiiyxaxaxaaxy2210)(确定系数,就必须解方程nnnnnxxxxxx1111100nnyyyaaa1010该方程的系数矩阵为范德蒙(Vandermonde)矩阵,它是严重病态的,因此这种方法不能使用。本实验的目的是观察这种病态性。实验内容: 取不同的 n ,并在 0 ,1 区间上取n

24、个等分点,计算上述系数矩阵A的条件数,画出(cond(A) )随着 n 变化的图形。(可利用MATLAB 的内部函数cond(A)求出矩阵的条件数,当n 取不同的值时,可分别用内部函数plot画出所要求的图形) 。2 龙格现象的发生、防止,插值效果的比较实验目的: 观察拉格朗日插值的龙格(Runge)现象,探索避免此现象发生的方法,精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 38 页比较插值效果。实验内容: 对区间 -5 ,5 作 10 等分,并给出以下三个函数:(1)215xy(2)xyarctan(3)41xxy分别对上述函数

25、计算点kx上的值,作出插值函数的图形并与)(xfy的图形比较。实验要求:(1) 编写程序对上述函数作拉格朗日插值,并在MATLAB 中用内部函数plot利用插值点绘制函数的图形。(2) 编写程序对上述函数作分段线性插值,并在MATLAB 中用内部函数plot利用插值点绘制函数的图形。(3) 编写程序对上述函数作三次样条插值,并在MATLAB 中用内部函数plot利用插值点绘制函数的图形。(4) 在 MATLAB 中用内部函数ezplot可直接绘制出以上函数的图形,并与作出的插值函数的图形进行比较。3 牛顿插值法实验目的: 学会牛顿插值法,并应用算法于实际问题。实验内容: 给定函数xxf)(,已

26、知:414214.1)0.2(f449138.1)1 .2(f483240.1)2.2(f516575.1)3 .2(f549193.1)4 .2(f实验要求:(1)用牛顿插值法求4 次Newton插值多项式在2.15 处的值,以此作为函数的近似值)15.2(15.2N。 在 MATLAB 中用内部函数ezplot绘制出 4 次Newton插值多项式的函数图形。(2) 在 MATLAB 中用内部函数ezplot可直接绘制出以上函数的图形,并与作出的4次Newton插值多项式的图形进行比较。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共

27、 38 页4 拟合方式实验实验目的: 学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。实验内容: 给定数据点),(iiyx如下:ix0 0 5 06 07 08 09 1 0 iy1 175 1 96 219 244 271 300 实验要求:(1) 编写程序用最小二乘法求拟合数据的多项式,并求平方误差,作出离散函数),(iiyx和拟合函数的图形。(2) 用 MATLAB 的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB 的内部函数plot作出其图形,并与(1)的结果进行比较。5. 以正交多项式为基底,作最小二乘多项式拟合。实验目的: 探索改

28、善最小二乘多项式的数值不稳定性的可能。实验内容:(1) 在-1 , 1 区间上取n=20 个等距节点, 计算出以相应点上xe的值作为数据样本,编写程序以1,)(,),(),(21xPxPxPl为基函数作出9 ,7,5 ,3l次的最小二乘多项式,其中,)(xPl是勒让德多项式。画出)(ln(Acond随着 n 变化的曲线,其中A是确定最小二乘多项式系数的矩阵。计算出不同阶最小二乘多项式给出的最小偏差niiiyxyl12)()((2) 用 MATLAB 的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数,并用 MATLAB 的内部函数plot作出其图形。数值实验六精选学习资料 - -

29、- - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 38 页1. Newton-cotes型求积公式实验目的: 学会 Newton-cotes型求积公式 , 并应用该算法于实际问题. 实验内容: 求定积分0cosxdxex实验要求:选择等分份数n, 用复化Simpson 求积公式求上述定积分的误差不超过810的近似值 , 用 MATLAB 中的内部函数int求此定积分的准确值, 与利用复化Simpson 求积公式计算的近似值进行比较。2. Romberg 算法实验目的: 学会数值求积的Romberg算法 , 并应用该算法于实际问题. 实验内容: 求定积分15

30、.0dxx实验要求:(1)要求程序不断加密对积分区间的等分, 自动地控制Romberg算法中的加速收敛过程 , 直到定积分近似值的误差不超过610为止 , 输出求得的定积分近似值。(2)可用 MATLAB 中的内部函数int求得此定积分的准确值与Romberg算法计算的近似值进行比较。3. Gauss型求积公式实验目的: 学会 Gauss型求积公式 , 并应用该算法于实际问题. 实验内容: 求定积分4421xdx实验要求:(1) 把 Gauss点的表格存入计算机, 以 Gauss-Legendre 求积公式作为本实验的例子,要求程序可以根据不同的阶数n, 自动地用n阶 Gauss-Legend

31、re求积公式计算上述定积分的近似值 . 体会 Gauss型求积公式是具有尽可能高的代数精度的数值求积公式。(2)可用 MATLAB 中的内部函数int求得此定积分的准确值与Gauss 型求积公式求得的值进行比较。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 38 页数值实验七1.常微分方程性态和R-K 法的稳定性实验目的: 学习掌握4 阶经典 R-K 方法,体会参数和步长对问题的影响。实验内容: 求解常微分方程初值问题1,01(0)1dyyxxdxy其中5050。实验要求:( 1)对参数取不同的值,取步长0.01h,编写程序用4 阶

32、经典 R-K 法计算,将计算结果画图比较,并分析相应的初值问题的性态。( 2)取参数为一个绝对值不大的负值和两个不同的步长,一个步长使参数,h在经典 R-K 法的稳定域内,另一步长在经典R-K 法的稳定域外,分别用R-K 法编写程序计算并比较计算结果,取全域等距的10 个点上的计算值。( 3)用 MATLAB 中的内部函数dsolve 求此常微分方程初值问题的解并与(1)与( 2)中的结果进行比较。2.解初值问题各种方法比较实验目的: 掌握了解各种解初值问题的方法,体会步长对问题解的影响。实验内容: 给定初值问题22,12(0)1xdyyx exdxxy其精确解为2()xyxee实验要求:精选

33、学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 38 页分别按(1)欧拉法,步长0.025,0.1hh;(2)改进的欧拉法,步长0.05,0.1hh;(3)四阶标准龙格- 库塔法,步长0.1h;编写程序求在节点10.1 (1,2,10)kxk kL处的数值解及误差,并比较各方法的优缺点。用MATLAB 中的内部函数dsolve求此常微分方程初值问题的解并与上述结果进行比较。3. 认识刚性微分方程实验目的: 了解认识刚性微分方程。实验内容:2)0(, 0)0(25.100075.9992000vuvudtdvvudtdu实验要求:任选一显式

34、方法,编写程序取不同步长求解上述方程。第四部分MATLAB入门精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 38 页一、 MATLAB简介MATLAB全名叫Matrix Laboratory ,是矩阵实验室的意思。MATLAB最初是由CleveMoler 用 Fortran 语言设计的, 现在的 Matlab 是由 MathWorks 公司用 C 语言开发的。MATLAB容易使用、可以由多种操作系统支持、具有丰富的内部函数、具有强大的图形和符号功能、可以自动选择算法、与其他软件和语言有良好的对接性。MATLAB是适用于科学和工程计算

35、的数学软件系统。1用户界面介绍MATLAB用户界面如图1 所示, 包括主菜单、 主工具栏、 命令窗口、 命令历史窗口、工作间管理窗口、当前路径窗口、编译窗口、图形窗口、启动按钮、帮助浏览器等。下面简单介绍命令窗口,其他的内容在使用的过程中会逐渐熟悉。命令窗口是用于输入数据,运行MATLAB 函数和脚本并显示结果的主要工具之一,命令窗口如图1 右边中下区域所示。图 1 MATLAB 用户界面2常量精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 38 页常量是 MATLAB 语言预定义的一些变量,在默认的情况下这些变量的值为常数。下面介绍

36、常用的一些常量:pi 表示圆周率;realmax 表示MATLAB可以表示的最大浮点数,MATLAB可以表示的最大浮点数为 ;Inf 表示无穷大,超过MATLAB 可以表示的最大浮点数时,系统将视该数为无穷大;realmin 表示 MA TLAB 可以表示的最小的正浮点数,MATLAB 可以表示的最小正浮点数为;eps 表示用来判断是否为0 的误差限,一般情况下,MA TLAB函数的默认误差限为eps,其值为;NaN(Not a number)表示不定值,例类似0/0,inf/inf 所生成的结果;i 或 j 表示纯虚数单位。3变量变量是 MATLAB 的基本元素之一,与其他常规设计语言不同的

37、是MATLAB语言不要求对所使用的变量进行事先说明,而且他也不需要指定变量的类型,系统会根据该变量被赋予的值或是对该变量所进行的操作来自动确定变量的类型。在 MATLAB 语言中,变量的命名有如下规则:(1)变量名长度不超过31 位,超过31 位的字符系统将忽略不计;(2)变量名区分大小写;(3)变量名必须以字母开头,变量名中可以包含字母、数字或下划线。注:(1)使用变量不要求事先声明;(2)也存在变量的作用域问题,一般视为局部变量,仅在其调用的M 文件内有效。若要定义全局变量,应加上关键字global,并一般用大写;(3)如果在对某个变量赋值时,如果该变量已经存在,系统则会自动使用新值精选学

38、习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 38 页来代替该变量的旧值。例如在命令窗口中输入“a=1;a=2”命令,则会得到如下结果:a = 2 4算术运算MATLAB中用“ +” 、 “-” 、 “*” “ /”和“ ”分别表示算术运算中的加、减、乘、除和乘方。例如:计算33121625)31(256256(1/6)*(1/3)(-1/2)+5(1/3)/23 ans = 4.5782 5数字的输入、运算(1)对于简单的数字运算,可以直接在命令窗口以惯用的形式输入。(2)当表达式较复杂或重复次数较多时,可先定义变量,然后由变量表达式计

39、算。(3)若用户没有对表达式设定变量,则MATLAB自动将当前结果给ans变量。(4)%以后的内容只起注释的作用。(5)若不想显示中间的结果,可用;结束一行;若想再次察看,只需输入变量名。(6)乘幂和开方运算分别由和函数 sqrt 实现。(7)数据存储和运算都以双精度进行的。6输出格式MATLAB中数值有多种显示形式。(1)缺省情况下,若数据为整数,则以整型表示;若为实数,则以保留小数点精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 38 页后的 4 位浮点数表示。(2)输出格式可由format 控制,该命令只影响在屏幕上的显示结果,

40、不影响在内部的存储和运算。可结合 short (4 位小数)、long (14 位小数)、 hex (16进制)、bank( 2 进制) 、 short e ( 4位小数的指数形式) 、long e( 14 位小数)、rational(分数形式) 。例在命令窗口中输入format long ,则以 14位小数显示结果;输入format rational ,则以 14 位小数显示结果。7用 MATLAB编程将一个完整的命令集合写入M 文件便是一段MATLAB程序,但要注意,编程是在MATLAB的编辑窗口而不是命令窗口。MATLAB还提供了一般程序语言的基本功能。(1) for 循环语句for i

41、=1:n for j=1:m A(i,j)=sin(i+j)/(m+n)+B(i,j); end end 循环中的步长是可以选择的。如for i=n:-2:n/2 A(i)=sin(i+n); end 即循环控制变量从n 开始,步长是 -2 到 n/2 结束。(2) while 循环语句与计算机的其他高级语言一样,while 循环语句要由关系运算和逻辑运算给出的逻辑控制,该语句的一般形式为while(逻辑表达式)精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 38 页(一族可执行语句)end MATLAB中的关系运算有相等不等,小于等

42、于,大于等于, 大于 . 而 MATLAB 提供的逻辑运算有& 与,或,非。(3) 条件语句for i=1:n for j=1:m if i=j A(i,j)=1; else if(ij/2) A(i,j)=-1; else A(i,j)=0; end end end 注意条件语句是以end 结尾的。(4) 内部函数MATLAB提供了丰富的运算函数,只需正确调用其形式就可得到满意的结果,常用的运算函数如表1 所示。表 1 MA TLAB 常用函数表精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 25 页,共 38 页函数名函数功能函数名函数功能函数

43、名函数功能sin 正弦acosh 反双曲余弦diff 求导cos 余弦atanh 反双曲正切int 积分tan 正切acoth 反双曲余切dsolve 求解微分方程cot 余切asech 反双曲正割dot 向量点乘sec 正割acsch 反双曲余割cross 向量叉乘csc 余割pow2 以 2 为底的幂函数fix 向零方向舍入asin 反正弦exp 以 e 为底的幂函数floor 向负方向舍入acos 反余弦log 自然对数ceil 向正方向舍入atan 反正切log10 以 10 为底的对数round 四舍五入acot 反余切log2 以 2 底的对数mod 有符号求余asec 反正割sq

44、rt 平方根rem 无符号求余acsc 反余割lim 求极限sign 符号函数asinh 反双曲正弦fsolve 求非线性方程的根abs 绝对值(5) 用户自定义函数MATLAB 允许用户使用M 文件定义函数,但必须符合一定的规则。例如下面一段程序存为funsim.m function p=funsim(x) % define a simple function p=sqrt(x)-2*x3+cos(x); 所给出的是函数)cos(23xxx。函数的输出可以多于一个,例如function x1,x2=quadroot(a,b,c) % solve quadratic equation ax2+

45、bx+c=0. ds=sqrt(b*b-4*a*c); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 26 页,共 38 页x1=(-b+ds)/2/a; x2=(-b-ds)/2/a; 将它存为quadroot.m,它给出二次方程的根。用户如此定义的函数可以与MATLAB内部函数同样使用. 8. 用 MATLAB绘制图形计算的可视化是当今科学与工程计算的主导方向之一,MATLAB提供了许多可以选用的图形功能,简介如下:(1) 二维图形函数plot 它是最常用和最简单的绘图命令。例如plot(x,y, );将向量 x 和 y 对应元素定义的点一次

46、用实线联接(的维数必须一样) ; 如果 x 和 y 为矩阵,则按列依次处理。plot(x1,y1, * , x2,y2,+);将向量 x 和 y 对应元素定义的点用星号标出,将向量x2 和 y2 对应元素定义的点用+标出。即MATLAB 可以划线或者点,它提供的点和线类型如表2 所示。表 2 点和线对应符号线符号点符号实线实心圆点. 虚线- - 加号+ 点: 星号* 虚线间点-. 空心圆点。叉号另外“ fplot ”用于化已定义函数在指定范围内的图像,它与“plot”类似但差别在于fplot 可以根据函数的性质自适应的选择取值点。精选学习资料 - - - - - - - - - 名师归纳总结

47、- - - - - - -第 27 页,共 38 页目前大部分的硬盘拷贝设备尚不能支持颜色,但彩色的显示已经是十分普及的,所以彩色显示在计算可视化中是十分有益的。颜色在绘图中的使用方法与线形的控制方法一样,常用的颜色有蓝色“ b” ,黄色“ y” ,红色“r” ,绿色“ g”例如plot(x,y, r ) 将 x 和 y 对应的元素定义的点依次用红色实线联接。(2) 绘图辅助函数利用这一族函数可以为画出的图像加上标题等内容。title( );在图形的上方显示中所指定的内容;xlabel( ); 将中所指定的内容标在x 轴;ylabel( ); 将中所指定的内容标在y 轴;grid; 在图上显示

48、虚线格;text(x,y, ); 将中所指定的内容标在由x,y 所指定的位置上;gtext( ); 运行到该命令,屏幕光标位置显示符号“+”等待,它将中所指定的内容标在鼠标所指定的位置;axis(x1 xr y1 yr) ; 其中的 4 个实数分别定义x 和 y 方向显示的范围;hold on;后面 plot 的图将叠加在一起;hold off ;解除 hold on 命令, plot 将先冲去图形窗口已有图形;注意上述辅助函数必须放在相应的“plot”之后。(3) 多窗口绘图函数subplot 该函数的形式为subplot(p,q,r) 该命令将图形窗口分成p 行 q 列共计 pq 个格子上

49、画图, 格子是从上到下按行一次记数的。例如 考虑 Chebeshev多项式,它可以用其递推公式定义如下:, 3 ,2),()(2)(,)(, 1)(2110kxtxxtxtxxtxtkkk精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 28 页,共 38 页下面的程序将-1,1上的前四个Chebeshev 多项式画在一张图上。% see how hold works x=-1:0.05:1; t0=1.0+0*x;t1=x; t2=2*x.*t1-t0;t3=2*x.*t2-t1; plot(x,t0);gtext(T0); title(Chebe

50、shev P); xlabel(x);ylabel(y); hold on plot(x,t1);gtext(T1); plot(x,t2);gtext(T2); plot(x,t3);gtext(T3); 图 2 重叠绘制出Chebeshev多项式 hold off 得到的图形将在图形窗口输出如图2 所示的图形。如果将上述一段命令在文件编辑窗口中依次录入,并存为shd.m,需要运行该程序时,只要在命令窗口输入命令“shd”即可。而使用 subplot 则程序为% see how hold works Chebeshev x=-1:0.05:1; t0=1.0+0*x;t1=x; t2=2*x

51、.*t1-t0;t3=2*x.*t2-t1; subplot(2,2,1);plot(x,t0); title(Chebeshev T0); xlabel(x);ylabel(y); subplot(2,2,2);plot(x,t1); -1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.81T0Chebeshev PxyT1T2T3精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 29 页,共 38 页 title(Chebeshev T1); xlabel(x);ylabel

52、(y); subplot(2,2,3);plot(x,t2); title(Chebeshev T2); xlabel(x);ylabel(y); subplot(2,2,4);plot(x,t3); title(Chebeshev T3); xlabel(x);ylabel(y); 得到的图形输出如图3 所示。-1-0.500.5100.511.52Chebeshev T0xy-1-0.500.51-1-0.500.51Chebeshev T1xy-1-0.500.51-1-0.500.51Chebeshev T2xy-1-0.500.51-1-0.500.51Chebeshev T3xy图

53、 3 重叠绘制出Chebeshev多项式(4) 三维图形函数三位的立体图形在MATLAB中形成也不难。例如对于函数2222)sin(),(yxyxyxf下面的程序画出该函数在区域18,1818,18),(yx上的三维图形。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 30 页,共 38 页020406080020406080-0.500.51xyz图 4 三维图形二、数值分析中的常用命令数值分析主要研究数学问题的数值解,涉及的内容包括代数、微积分、微分方程等。利用 MATLAB提供的函数,可以实现以下问题的数值求解。1求解线性方程组线性方程组的解

54、法很多,主要介绍几种常用的方法。(1) 基于矩阵变换的直接解法?使用 或/运算符,可以基于一系列矩阵变换直接求解线性方程组;例如: 求解方程组bAx A=2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-7,6; b=8,9,-5,0; x=ab x = 3.0000 -4.0000 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 31 页,共 38 页-1.0000 1.0000 ?linsolve(A,b) :解线性方程组Ax=b. 例如: 求解方程组bAx a=2,1,-5,1;1,-3,0,-6;0,2,-1,2;1,4,-

55、7,6; b=8,9,-5,0; x=linsolve(a,b) x = 3.0000 -4.0000 -1.0000 1.0000 (2) 迭代法如 Jocabi 迭代法、 Gauss-Seidel迭代法、 SOR(超松弛) 迭代法需要根据算法编写相应的M 文件来实现。2.求矩阵的特征值和特征向量用 eig 或 eigs 函数求矩阵的特征值和特征向量。例如: 求矩阵1202514101A的特征值和特征向量 A=1 2 0;2 5 -1;4 10 -1; b,c=eig(A) b = -0.2440 -0.9107 0.4472 -0.3333 0.3333 0.0000 精选学习资料 - -

56、 - - - - - - - 名师归纳总结 - - - - - - -第 32 页,共 38 页-0.9107 -0.2440 0.8944 c = 3.7321 0 0 0 0.2679 0 0 0 1.0000 其中, b 和 c 矩阵分别为特征向量矩阵和特征值矩阵. 3求解一元非线性方程(1) 用 fzero 函数求求一元非线性方程的零点。该函数的调用格式为:x=fzero(fun,x0): 如果 x0 为标量,则试图寻找函数fun 在 x0 附近的零点。例如: 求方程0543xx f=(x)x.3-4*x+5; z=fzero(f,1) z = -2.4567 (2) 用 roots

57、函数计算多项式的根,该函数的调用格式为:r=roots(c): 返回一个列矢量,其元素为多项式c 的解。例如: 求方程0543xx p=1,0,-4,5; (用行矢量表示多项式) r=roots(p) r = -2.4567 1.2283 + 0.7256i 1.2283 - 0.7256i 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 33 页,共 38 页(3) newton 法需要编写M 文件来实现。非线性方程组的求解一般采用迭代法求解,主要有不动点迭代法、Newton 迭代法和拟 Newton 迭代法,需要编程实现。4. 插值(1) 一维

58、线性插值函数的调用格式为:yi=interp1(x,y,xi, method )功能:对一组点(x,y)进行插值,计算xi 的值。 xi, yi 可以是矩阵。method 的取值可以是:?Nearest(线性最近项插值)?Linear (线性插值,默认值)?Spline(三次样条插值)?Cubic(三次插值)例如: x=0.4:0.1:0.8; y=-0.916291,-0.693147,-0.510826, -0.356675,-0.223144; interp1(x,y,0.54,cubic) ans = -0.61610990887357 interp1(x,y,0.54 0.54,ne

59、arest) ans = -0.69314700000000 -0.69314700000000 (2) 二维线性插值函数的调用格式为:zi=interp2(x,y,z,xi,yi method )精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 34 页,共 38 页功能: 对一组点( x,y,z)进行插值,计算(xi, yi ) 的值。xi, yi 可以是矩阵,method 的取值同上。(3) 三维线性插值函数的调用格式为:vi=interp2(x,y,z,v,xi,yi ,zi method )功能: 对一组点( x,y,z,v)进行插值,计算

60、(xi, yi , ,zi)的值。xi, yi zi 可以是矩阵,method 的取值同上。(4) 三次样条插值函数的调用格式为:yi=spline(x,y,xi) 功能: 消除高阶多项式的插值产生的病态。等同于yi = interp1(x,y,xi,spline )例如: x=0.4:0.1:0.8; y=-0.916291,-0.693147,-0.510826, -0.356675,-0.223144; yi=spline(x,y,0.5) yiz = -0.6931 5曲线拟合函数的调用格式为:p=ployfit(x,y,n) 功能: 利用离散的点来生成一条连续的曲线。已知一组数据(x

61、i,yi ),从中找出自变量x 与因变量y 之间的函数关系y=f(x) 。并不要求y=f(x) 在每个点上都完全相等,它只要求在给定点xi 上使误差2y)f(xii最小。例如: x=1 3 4 5 6 7 8 9 10; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 35 页,共 38 页 y=10 5 4 2 1 1 2 3 4; p,s=polyfit(x,y,4); y1=polyval(p,x); plot(x,y,go,x,y1,b-) 6数值积分(1) 定积分?用 trapz 函数进行梯形数值求积. 例如: 计算xdx0sin X=0

62、:pi/100:pi; Y=sin(X); Z=trapz(X,Y) Z = 1.9998 ?用 quad 和 quad8 函数进行自适应递归Simpson 求积例如: 计算dxxx203521首先编写函数的M 文件 myfun.m function y=myfun(x) y=1./(x.3-2*x-5); 然后在命令窗口输入 Q=quad(myfun,0,2) Q = -0.4605 ?Gauss求积和 Romberg 求积需要编程序来实现。(2) 二重积分精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 36 页,共 38 页用 dblquad

63、函数对二重积分进行数值计算,该函数语法格式为:q=dblquad(fun,xmin,xmax,ymin,ymax) q=dblquad(fun,xmin,xmax,ymin,ymax,tol) q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method) 例如: 计算dxdy)xcos(yysin(x)(02首先编写函数的M 文件 integrnd.m function z=integrnd(x,y) z=y*sin(x)+x*cos(y); 然后在命令窗口输入 Q=dblquad(integrnd,pi,2*pi,0,pi) Q = -9.8696 (3) 三重

64、积分用 triplequad 函数对三重积分进行数值计算,该函数语法格式为:q=triplequad (fun,xmin,xmax,ymin,ymax,zmin,zmax) q=triplequad (fun,xmin,xmax,ymin,ymax, zmin,zmax,tol) q=triplequad (fun,xmin,xmax,ymin,ymax,zmin,zmax,tol,method) 例如: 计算dxdydz)zcos(yysin(x)(11 -10 0首先编写函数的M 文件 integrnd.m function u=integrnd(x,y) u=y*sin(x)+z*cos

65、(y); 然后在命令窗口输入 Q=triplequad(integrnd,0,pi,0,1,-1,1) Q = 2.0000 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 37 页,共 38 页7求解微分方程用 dsolve 命令可以求出微分方程的解,该函数的调用格式为:r=dsolve( eq1,eq2,cond1,cond2,. , v ) 例如:求解微分方程21ydxdy dsolve(Dy=1+y2) ans = tan(t+C1) 若指定初始条件1y0x y=dsolve(Dy=1+y2,y(0)=1) y = tan(t+1/4*pi) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 38 页,共 38 页

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号