收藏 分享(赏)

数值分析课程.doc

上传人:hskm5268 文档编号:9319336 上传时间:2019-08-01 格式:DOC 页数:39 大小:1,001KB
下载 相关 举报
数值分析课程.doc_第1页
第1页 / 共39页
数值分析课程.doc_第2页
第2页 / 共39页
数值分析课程.doc_第3页
第3页 / 共39页
数值分析课程.doc_第4页
第4页 / 共39页
数值分析课程.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、数值分析课程实验指导书太原科技大学应用科学学院数学系目 录前 言 1第一部分 数值实验报告格式1第二部分 数值实验报告范例2第三部分 数值实验 6数值实验一 6数值实验二8数值实验三10数值实验四12数值实验五13数值实验六16数值实验七17第四部分 MATLAB 入门19数值分析实验指导书- 1 -前 言该实验指导书是数值分析课程的配套数值实验教材。 数值分析是理工科大学本科生与硕士研究生的必修课程,学习本课程的最终目的,是用计算机解决科学和工程实际中的数值计算问题,因此熟练地在计算机上实现算法是必备的基本技能。数值实验是数值分析课程中不可缺少的部分,利用计算机进行数值实验,以消化巩固所学的

2、内容,增加对算法的可靠性、收敛性、稳定性及效率的感性认识,体会和重视算法在计算机上实验时可能出现的问题。学生通过选择算法、编写程序、分析数值结果、写数值实验报告等环节的综合训练,逐步掌握数值实验的方法和技巧,获得各方面的数值计算经验,培养学生运用所学算法解决实际问题和进行理论分析的能力。该实验指导书由王希云、刘素梅、王欣洁、李晓峰等老师编写。第一部分 数值实验报告格式一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下:一、实验名称实验者可根据报告形式需要适当写出。

3、二、实验目的及要求首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出。数值分析实验指导书- 2 -三、算法描述(实验原理与基础理论)数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出。四、实验内容实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备。五、程序流程图画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题。六、实验结果实验结果应包括实验的原始数据、中间结

4、果及实验的最终结果,复杂的结果可以用表格形式列出,较为简单的结果可以与实验结果分析合并出现。七、实验结果分析(对算法的理解与分析,包括改进与建议)实验结果分析是数值实验的重要环节,只有对实验结果认真分析,才能对实验目的、实验方法进一步理解,对实验的重要性充分认识,明确数值分析的实用范围及其优缺点。第二部分 数值实验报告范例为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考。数值实验报告一、实验名称数值分析实验指导书- 3 -误差传播与算法稳定性二、实验目的1理解数值计算稳定性的概念。2了解数值计算方法的必要性。3体会数值计算的收敛性与收敛速度。三、实验内容计算 ,dx

5、Inn101,20四、算法描述由 ,知 dxInn10 dxInn10则ndxxInn 11010100 可得递推关系1 ,nI1nI10,22 ,)(01nnI ,9下面分别以 1,2 递推关系求解方案 1 ,nI1nI10,2当 时, 1.1 , 递推公式为0dx0数值分析实验指导书- 4 -(1)1.ln10,2,00II方案 2 ,)1(nnI ,9当 时, 10xnnxx10则 dxdxdxnnn 101100 即 )1(0)1(nIn取递推初值 )0(2)()(210 I递推公式为 (2))10(21,9,10InIn 取递推公式(1)中的初值 ,得953.ln09531. 10,

6、2 ,0IInn 取递推公式(2)中的初值 ,得0867. 1,9),(10InIn 数值分析实验指导书- 5 -五、程序流程图由于实验方案明显、简单,实现步骤及流程图省略。六、实验结果计算结果如下:n )1(nI )2(*nI0123456789100.0953100.0469000.0310000.0233330.0166670.033333-0.1666671.8095240.0953100.0468980.0310180.0231530.0184650.0153530.0131380.0114810.0101880.0092320.008678七、实验结果分析由递推公式(1)知当 时,

7、 应当为精确解,递推公式的每一步都没有1.ln0InI误差的取舍,但计算结果 , 出现负值。由此看出,3.5 067.4I6当 较大时,用递推公式(1)中的 近似 是不正确的。nnI主要原因是初值 不是精确值,设有误差 ,由递推公式(1)知091.I )(0Ie数值分析实验指导书- 6 -)(10)(nnIeI则有 )(10)()()( 21 IeIIIe nnnn 误差 随 的增大而迅速增加,增加到 的 倍。由此可见,递推公式计)(nIe0e算的误差不仅取决于初值的误差,公式的精确性,还依赖于误差的传递即递推计算的稳定性。由递推公式(2)知 , 为估计值,并不精确,有 ,0867.1InI

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

9、-数值实验一1 误差传播与算法稳定性实验目的:体会稳定性在选择算法中的地位。误差扩张的算法是不稳定的,是我们所不期望的;误差衰竭的算法是稳定的,是我们努力寻求的,这是贯穿本课程的目标。实验内容:计算 1,2n ,10dxeEn算法一: ,1 ,3 ,1nn算法二: ,0NE,2-N, ,1 n实验要求:(1) 分别用算法一、算法二采用 6 位有效数字计算 ,请判断哪种算法能给出nE更精确的结果。(2) 请从理论上证明你实验得出的结果,解释实验的结果。设算法一中 的计算1E误差为 ,由 递推计算到 的误差为 ;算法二中 的计算误差为 ,由e1EnenNEN向前递推计算到 ( )的误差为 。如果在

10、上述两种算法中都假定后面的计NnN算不再引入其他误差,试给出 与 的关系和 与 关系。ne1nN(3) 算法一中通常 会很小,当 n 增大时, 的变化趋势如何?算法二中 通1eN常相对比较大,当 n 减小时,误差 又是如何传播的?即比较两个算法,当某一步产生误差后,该误差对后面的影响是衰减还是扩张的。(4) 通过理论分析与计算实验,针对两个算法的稳定性,给出你的结论。2 不同方案收敛速度的比较实验目的:通过实验体会数值计算中算法选择的重要地位。数值分析实验指导书- 8 -实验内容:三种求2 的算法比较。方案一:利用级数 ,1)(.4312lnkk设 ,nkS1)(则 nS2l方案二:对上述 ,

11、kkn1)(按)3,4(n 2)s(21nnSs生成新数列 ,则nnsl方案三:利用级数 1432 221k设 ,则nkS1nSl实验要求:分别用三种方案求出 的近似值,要求 ,观察比较三种计算方案的2ln5102收敛速度。在 MATLAB 命令窗口输入 log(2)求解,并与三种方案计算的结果进行比较。数值实验二1. 解线性方程组的列主元素高斯消去法和 LU 分解法实验目的:通过数值实验,从中体会解线性方程组选主元的必要性和 LU 分解法的优点,以及方程组系数矩阵和右端向量的微小变化对解向量的影响。数值分析实验指导书- 9 -实验内容:解下列两个线性方程组(1) 134.981.97.026

12、2.3x(2) 1590.820155.343x实验要求:(1) 用你熟悉的算法语言编写程序用列主元高斯消去法和 LU 分解求解上述两个方程组,输出 Ax=b 中矩阵 A 及向量 b, A=LU 分解的 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,并与(

13、1)中的结果比较。(4)用 MATLAB 的内部函数 inv 求出系数矩阵的逆矩阵,再输入命令 x=inv(A)*b,即可求出上述各个方程组的解,并与列主元高斯消去法和 LU 分解法求出的解进行比较,体会选主元的方法具有良好的数值稳定性。用 MATLAB 的内部函数 det 求出系数行列式的值,并与(1) 、 (2) 、 (3)中输出的系数行列式的值进行比较。2. 研究解线性方程组 迭代法收敛速度bAx实验目的:认识迭代法收敛的含义以及迭代法初值和方程组系数矩阵性质对收敛速度的影响。实验内容:用迭代法求解 ,其中 为五对角矩阵bx20RA201324113424A 实验要求:数值分析实验指导书

14、- 10 -(1)选取不同的初始向量 X 及右端向量 b,给定迭代误差要求,用 Jacobi 迭代)0(法和 Gauss-Seidel 迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。(2)用 SOR 迭代法求上述方程组的解,松驰系数 取 的不同值,在21时停止迭代,记录迭代次数,分析计算结果与松驰系数 的关5)1()(0kX 系并得出你的结论。(3)用 MATLAB 的内部函数 inv 求出系数矩阵的逆矩阵,再输入命令 x=inv(A)*b,即可求出上述各个方程组的解,并与上述方法求出的解进行比较。3病态线性方程组的求解 实验目的:通过实验体会病态线性方

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

16、程组的解法,并求解维数为 6、10、100 的上述方程组。数值实验三数值分析实验指导书- 11 -1 矩阵特征值的求法实验目的:通过实验进一步熟悉掌握求矩阵特征值的各种方法的使用与比较。实验内容:给定矩阵 1212A31206B414C实验要求: (1) 分别用幂法、反幂法、雅可比方法编写程序求矩阵 A、B、C 的按模最大特征值、按模最小特征值、全部特征值(要求误差10 ) 。5(2) 用 MATLAB 的内部函数 eig 求矩阵 A、B、C 的全部特征值,并与(1)的结果比较。2 用 QR 算法求矩阵的特征值实验目的:通过实验进一步熟悉掌握求矩阵特征值的 QR 方法及原理。实验内容:给定矩阵

17、 , 1326A01098276354H实验要求:(1) 根据 QR 算法原理编写程序求矩阵 及矩阵 的全部特征值(要求误差10A) 。5(2) 直接用 MATLAB 的内部函数数值分析实验指导书- 12 -eig 求矩阵 及矩阵 的全部特征值,并与(1)的结果比较。AH数值实验四1迭代函数对收敛性的影响实验目的:初步了解非线性方程的简单迭代法及其收敛性,体会迭代函数对收敛性的影响,知道当迭代函数满足什么条件时,迭代法收敛。实验内容:用简单迭代法求方程 的根。012)(3xf方案一: 化 为等价方程 012)(3xf)(23x方案二: 化 为等价方程 1x实验要求:(1)分别对方案一、方案二取

18、初值 ,迭代 10 次,观察其计算值,并加以分0x析。(2)用 MATLAB 内部函数 solve 直接求出方程的所有根,并与(1)的结果进行比较。2. 初值的选取对迭代法的影响实验目的:通过具体的数值实验,体会选取不同的初值对同一迭代法的影响。实验内容:用牛顿迭代法求方程 在 =1.5 附近的根。013x实验要求:(1)对牛顿迭代公式: ,编写程序进行实验,分别取1321kkxx, 迭代 10 次,观察比较其计算值,并分析原因。0x5.(2)用 MATLAB 内部函数 solve 直接求出方程的所有根,并与(1)的结果进行比数值分析实验指导书- 13 -较。3 收敛性与收敛速度的比较实验目的

19、:通过用不同迭代法解同一非线性方程,比较各种方法的收敛性与收敛速度。实验内容:求解非线性方程 的根,准确到 10 。0232xex 6实验要求:(1) 用你自己设计的一种线性收敛的迭代法求方程的根,然后用斯蒂芬森加速迭代计算。输出迭代初值、各次迭代值及迭代次数。(2)用牛顿迭代法求方程的根,输出迭代初值、各次迭代值及迭代次数,并与(1)的结果比较。(3)用 MATLAB 内部函数 solve 直接求出方程的所有根,并与(1) 、 (2)的结果进行比较。数值实验五1 观察直接利用拉格朗日插值多项式的病态性实验目的:如果直接利用插值多项式的定义,即 iniiii yxaxaxy 210)(确定系数

20、,就必须解方程 nnnx 1100 nya10该方程的系数矩阵为范德蒙(Vandermonde)矩阵,它是严重病态的,因此这种方法不能使用。本实验的目的是观察这种病态性。实验内容:取不同的 n ,并在0,1区间上取 n 个等分点,计算上述系数矩阵 A 的数值分析实验指导书- 14 -条件数,画出(cond(A))随着 n 变化的图形。 (可利用 MATLAB 的内部函数 cond(A)求出矩阵的条件数,当 n 取不同的值时,可分别用内部函数 plot 画出所要求的图形) 。2 龙格现象的发生、防止,插值效果的比较实验目的:观察拉格朗日插值的龙格(Runge)现象,探索避免此现象发生的方法,比较

21、插值效果。实验内容:对区间-5,5作 10 等分,并给出以下三个函数:(1) (2) (3)25xyxyarctn41xy分别对上述函数计算点 上的值,作出插值函数的图形并与 的图形比较。k )(f实验要求:(1) 编写程序对上述函数作拉格朗日插值,并在 MATLAB 中用内部函数 plot 利用插值点绘制函数的图形。(2) 编写程序对上述函数作分段线性插值,并在 MATLAB 中用内部函数 plot 利用插值点绘制函数的图形。(3) 编写程序对上述函数作三次样条插值,并在 MATLAB 中用内部函数 plot 利用插值点绘制函数的图形。(4) 在 MATLAB 中用内部函数 ezplot 可

22、直接绘制出以上函数的图形,并与作出的插值函数的图形进行比较。3 牛顿插值法实验目的:学会牛顿插值法,并应用算法于实际问题。实验内容:给定函数 ,已知:xf)(412.)0(f 49138. 48320.1)(f56735)(f实验要求:数值分析实验指导书- 15 -(1)用牛顿插值法求 4 次 Newton 插值多项式在 2.15 处的值,以此作为函数的近似值 。在 MATLAB 中用内部函数 ezplot 绘制出 4 次 Newton 插值多项)15.2(.N式的函数图形。(2) 在 MATLAB 中用内部函数 ezplot 可直接绘制出以上函数的图形,并与作出的4 次 Newton 插值多

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

24、二乘多项式拟合。实验目的:探索改善最小二乘多项式的数值不稳定性的可能。实验内容:(1)在-1,1区间上取 n=20 个等距节点,计算出以相应点上 的值作为数据样xe本,编写程序以 1, 为基函数作出 次的最小二乘多项)(,)(,2xPxl 9,753l式,其中, 是勒让德多项式。画出 随着 n 变化的曲线,其中 A 是确)(Pl )(nAcod定最小二乘多项式系数的矩阵。计算出不同阶最小二乘多项式给出的最小偏差 niiiyxl12)()((2) 用 MATLAB 的内部函数 polyfit 求解上面最小二乘法曲线拟合多项式的系数,并用 MATLAB 的内部函数 plot 作出其图形。数值实验六

25、1. Newton-cotes 型求积公式实验目的:学会 Newton-cotes 型求积公式,并应用该算法于实际问题.实验内容:求定积分 0cosxde实验要求:选择等分份数 ,用复化 Simpson 求积公式求上述定积分的误差不超过n的近似值,用 MATLAB 中的内部函数 int 求此定积分的准确值,与利用复化 Simpson810求积公式计算的近似值进行比较。2. Romberg 算法实验目的:学会数值求积的 Romberg 算法,并应用该算法于实际问题.实验内容:求定积分 15.0dx实验要求:数值分析实验指导书- 17 -(1)要求程序不断加密对积分区间的等分,自动地控制 Romb

26、erg 算法中的加速收敛过程,直到定积分近似值的误差不超过 为止,输出求得的定积分近似值。610(2)可用 MATLAB 中的内部函数 int 求得此定积分的准确值与 Romberg 算法计算的近似值进行比较。3. Gauss 型求积公式实验目的:学会 Gauss 型求积公式,并应用该算法于实际问题.实验内容:求定积分 421xd实验要求:(1)把 Gauss 点的表格存入计算机,以 Gauss-Legendre 求积公式作为本实验的例子,要求程序可以根据不同的阶数 ,自动地用 阶 Gauss-Legendre 求积公式计算上述n定积分的近似值.体会 Gauss 型求积公式是具有尽可能高的代数

27、精度的数值求积公式。(2)可用 MATLAB 中的内部函数 int 求得此定积分的准确值与 Gauss 型求积公式求得的值进行比较。数值实验七1. 常微分方程性态和 R-K 法的稳定性实验目的:学习掌握 4 阶经典 R-K 方法,体会参数和步长对问题的影响。实验内容:求解常微分方程初值问题 1,0(0)dyx其中 。50实验要求:(1)对参数 取不同的值,取步长 ,编写程序用 4 阶经典 R-K 法计算,将0.1h数值分析实验指导书- 18 -计算结果画图比较,并分析相应的初值问题的性态。(2)取参数 为一个绝对值不大的负值和两个不同的步长,一个步长使参数 在 ,h经典 R-K 法的稳定域内,

28、另一步长在经典 R-K 法的稳定域外,分别用 R-K 法编写程序计算并比较计算结果,取全域等距的 10 个点上的计算值。(3)用 MATLAB 中的内部函数 dsolve 求此常微分方程初值问题的解并与(1)与(2)中的结果进行比较。2. 解初值问题各种方法比较实验目的:掌握了解各种解初值问题的方法,体会步长对问题解的影响。实验内容:给定初值问题 2,1(0)xdyex其精确解为 2(xye实验要求:分别按(1)欧拉法,步长 ;0.25,.1h(2)改进的欧拉法,步长 ;0h(3)四阶标准龙格-库塔法,步长 ;.编写程序求在节点 处的数值解及误差,并比较各方法的10.(,21)kx优缺点。用

29、MATLAB 中的内部函数 dsolve 求此常微分方程初值问题的解并与上述结果进行比较。3. 认识刚性微分方程实验目的:了解认识刚性微分方程。数值分析实验指导书- 19 -实验内容: 2)0(, 25.107.9vudtvu实验要求:任选一显式方法,编写程序取不同步长求解上述方程。第四部分 MATLAB 入门一、MATLAB 简介MATLAB 全名叫 Matrix Laboratory,是矩阵实验室的意思。 MATLAB 最初是由CleveMoler 用 Fortran 语言设计的,现在的 Matlab 是由 MathWorks 公司用 C 语言开发的。MATLAB 容易使用、可以由多种操作

30、系统支持、具有丰富的内部函数、具有强大的图形和符号功能、可以自动选择算法、与其他软件和语言有良好的对接性。MATLAB是适用于科学和工程计算的数学软件系统。1用户界面介绍MATLAB 用户界面如图 1 所示,包数值分析实验指导书- 20 -括主菜单、主工具栏、命令窗口、命令历史窗口、工作间管理窗口、当前路径窗口、编译窗口、图形窗口、启动按钮、帮助浏览器等。下面简单介绍命令窗口,其他的内容在使用的过程中会逐渐熟悉。命令窗口是用于输入数据,运行 MATLAB 函数和脚本并显示结果的主要工具之一,命令窗口如图 1 右边中下区域所示。图 1 MATLAB 用户界面2常量常量是 MATLAB 语言预定义

31、的一些变量,在默认的情况下这些变量的值为常数。下面介绍常用的一些常量:pi 表示圆周率;realmax 表示 MATLAB 可以表示的最大浮点数, MATLAB 可以表示的最大浮点数为 ;Inf 表示无穷大,超过 MATLAB 可以表示的最大浮点数时,系统将视该数为无穷大;realmin 表示 MATLAB 可以表示的最小的正浮点数, MATLAB 可以表示的最小正数值分析实验指导书- 21 -浮点数为 ;eps 表示用来判断是否为 0 的误差限,一般情况下, MATLAB 函数的默认误差限为eps,其值为 ;NaN(Not a number)表示不定值,例类似 0/0,inf/inf 所生成

32、的结果;i 或 j 表示纯虚数单位。3变量变量是 MATLAB 的基本元素之一,与其他常规设计语言不同的是 MATLAB 语言不要求对所使用的变量进行事先说明,而且他也不需要指定变量的类型,系统会根据该变量被赋予的值或是对该变量所进行的操作来自动确定变量的类型。在 MATLAB 语言中,变量的命名有如下规则:(1) 变量名长度不超过 31 位,超过 31 位的字符系统将忽略不计;(2) 变量名区分大小写;(3) 变量名必须以字母开头,变量名中可以包含字母、数字或下划线。注:(1) 使用变量不要求事先声明;(2) 也存在变量的作用域问题,一般视为局部变量,仅在其调用的 M 文件内有效。若要定义全

33、局变量,应加上关键字 global,并一般用大写;(3) 如果在对某个变量赋值时,如果该变量已经存在,系统则会自动使用新值来代替该变量的旧值。例如在命令窗口中输入“a=1;a=2”命令,则会得到如下结果:a =24算术运算MATLAB 中用“+” 、 “-”、 “*”“/”和“ ”分别表示算术运算中的加、减、乘、除和乘方。数值分析实验指导书- 22 -例如:计算31265)(256(1/6)*(1/3)(-1/2)+5(1/3)/23ans =4.5782 5数字的输入、运算(1) 对于简单的数字运算,可以直接在命令窗口以惯用的形式输入。(2) 当表达式较复杂或重复次数较多时,可先定义变量,然

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

35、(14 位小数) 、hex (16 进制) 、bank( 2 进制) 、short e (4 位小数的指数形式) 、long e( 14 位小数) 、rational(分数形式) 。例在命令窗口中输入 format long ,则以 14 位小数显示结果;输 入 format rational,则以 14 位小数显示结数值分析实验指导书- 23 -果。7用 MATLAB 编程将一个完整的命令集合写入 M 文件便是一段 MATLAB 程序,但要注意,编程是在MATLAB 的编辑窗口而不是命令窗口。MATLAB 还提供了一般程序语言的基本功能。(1) for 循环语句for i=1:nfor j=

36、1:mA(i,j)=sin(i+j)/(m+n)+B(i,j);endend循环中的步长是可以选择的。如for i=n:-2:n/2A(i)=sin(i+n);end即循环控制变量从 n 开始,步长是-2 到 n/2 结束。(2) while 循环语句与计算机的其他高级语言一样,while 循环语句要由关系运算和逻辑运算给出的逻辑控制,该语句的一般形式为while(逻辑表达式)(一族可执行语句)endMATLAB 中的关系运算有 相等 不等, 大于等于, 大于.而 MATLAB 提供的逻辑运算有else if(ij/2)A(i,j)=-1;elseA(i,j)=0;endendend注意条件语

37、句是以 end 结尾的。(4) 内部函数MATLAB 提供了丰富的运算函数,只需正确调用其形式就可得到满意的结果,常用的运算函数如表 1 所示。表 1 MATLAB 常用函数表函数名 函数功能 函数名 函数功能 函数名 函数功能sin 正弦 acosh 反双曲余弦 diff 求导cos 余弦 atanh 反双曲正切 int 积分tan 正切 acoth 反双曲余切 dsolve 求解微分方程cot 余切 asech 反双曲正割 dot 向量点乘数值分析实验指导书- 25 -sec 正割 acsch 反双曲余割 cross 向量叉乘csc 余割 pow2 以 2 为底的幂函数 fix 向零方向舍

38、入asin 反正弦 exp 以 e 为底的幂函数 floor 向负方向舍入acos 反余弦 log 自然对数 ceil 向正方向舍入atan 反正切 log10 以 10 为底的对数 round 四舍五入acot 反余切 log2 以 2 底的对数 mod 有符号求余asec 反正割 sqrt 平方根 rem 无符号求余acsc 反余割 lim 求极限 sign 符号函数asinh 反双曲正弦 fsolve 求非线性方程的根 abs 绝对值(5) 用户自定义函数MATLAB 允许用户使用 M 文件定义函数,但必须符合一定的规则。例如下面一段程序存为 funsim.mfunction p=fun

39、sim(x)% define a simple functionp=sqrt(x)-2*x3+cos(x);所给出的是函数 。函数的输出可以多于一个,)cos(23xx例如function x1,x2=quadroot(a,b,c)% solve quadratic equation ax2+bx+c=0.ds=sqrt(b*b-4*a*c);x1=(-b+ds)/2/a;x2=(-b-ds)/2/a;将它存为 quadroot.m,它给出二次方程的根。用户如此定义的函数可以与 MATLAB内部函数同样使用.8. 用 MATLAB 绘制图形数值分析实验指导书- 26 -计算的可视化是当今科学与

40、工程计算的主导方向之一,MATLAB 提供了许多可以选用的图形功能,简介如下:(1) 二维图形函数 plot它是最常用和最简单的绘图命令。例如plot(x,y,);将向量 x 和 y 对应元素定义的点一次用实线联接(的维数必须一样) ;如果 x 和 y 为矩阵,则按列依次处理。plot(x1,y1,*, x2,y2,+);将向量 x 和 y 对应元素定义的点用星号标出,将向量 x2 和 y2 对应元素定义的点用+标出。即 MATLAB 可以划线或者点,它提供的点和线类型如表 2 所示。表 2 点和线对应符号线 符号 点 符号实线 实心圆点 .虚线 - - 加号 +点 : 星号 *虚线间点 -.

41、 空心圆点 。叉号 另外“fplot”用于化已定义函数在指定范围内的图像,它与“plot ”类似但差别在于 fplot 可以根据函数的性质自适应的选择取值点。目前大部分的硬盘拷贝设备尚不能支持颜色,但彩色的显示已经是十分普及的,所以彩色显示在计算可视化中是十分有益的。颜色在绘图中的使用方法与线形的控制方法一样,常用的颜色有蓝色“b” ,黄色“y” ,红色“ r” ,绿色“g”例如 plot(x,y, r) 将 x 和 y 对应的元素定义的点依次用红色实线联接。(2) 绘图辅助函数数值分析实验指导书- 27 -利用这一族函数可以为画出的图像加上标题等内容。title( );在图形的上方显示中所指

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

43、3) 多窗口绘图函数 subplot 该函数的形式为subplot(p,q,r)该命令将图形窗口分成 p 行 q 列共计 pq 个格子上画图,格子是从上到下按行一次记数的。例如考虑 Chebeshev 多项式,它可以用其递推公式定义如下:,32),()(2)(,120 kxtxttkk下面的程序将-1,1上的前四个 Chebeshev 多项式画在一张图上。% see how hold works x=-1:0.05:1; t0=1.0+0*x;t1=x;-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1-0.8-0.6-0.4-0.200.20.40.60

44、.81 T0Chebeshev PxyT1T2T3数值分析实验指导书- 28 - t2=2*x.*t1-t0;t3=2*x.*t2-t1; plot(x,t0);gtext(T0); title(Chebeshev 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,需要运行

45、该程序时,只要在命令窗口输入命令“shd”即可。而使用 subplot 则程序为% see how hold works Chebeshev x=-1:0.05:1; t0=1.0+0*x;t1=x; t2=2*x.*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); title(Chebeshev T1); xlabel(x);ylabel(y); subplot(2,2,3);plot(x,t2); title(Chebeshev T2);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报