数值分析实验
董海云
数理学院数学实验教学中心
2008年3月
目 录
0 Matlab介绍入门知识 ........................................................................................................... 3 1 绪论 ..................................................................................................................................... 17
1.1 例题解答 ............................................................................................................... 17 1.2 Matlab中数值计算精度 ...................................................................................... 20 2 线性方程组的直接解法 ..................................................................................................... 22
2.1 例题解答 ............................................................................................................... 22 2.2 Matlab解线性方程组常用命令介绍 .................................................................. 36 3 线性方程组的迭代解法 ..................................................................................................... 37
3.1 例题解答 ................................................................................................................ 37 3.2 Matlab迭代解法用到的函数介绍 ...................................................................... 53 4 方阵特征值和特征向量的计算 ......................................................................................... 54
4.1 例题解答 ................................................................................................................ 54 4.2 Matlab关于方阵特征值为特征向量函数介绍 .................................................. 62 5 非线性方程求根 ................................................................................................................. 63
5.1 例题解答 ................................................................................................................ 63 5.2 Matlab非线性方程求根的命令 .......................................................................... 84 6 插值法 ............................................................................................................................... 85
6.1 例题解答 ................................................................................................................ 85 6.2 Matlab插值函数介绍 ......................................................................................... 100 7 数据拟合和最佳平方逼近 ............................................................................................. 102
7.1 例题解答 .............................................................................................................. 102 7.2 Matlab数据拟合命令介绍 ................................................................................ 112 8 数值积分与数值微分 ..................................................................................................... 113
8.1 例题解答 ............................................................................................................. 113 9 常微分方程数值解法 ..................................................................................................... 136
9.1 例题解答 .............................................................................................................. 136 9.2 Matlab常微分方程数值解常用命令介绍 ........................................................ 153
2
0 Matlab介绍入门知识
1. Matlab简介
MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵.MATLAB自问世以来,就是以数值计算称.MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使得MATLAB高度“向量化”.经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具.由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的.MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具.工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等.随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,MATLAB提供的工具箱已覆盖信号处理、系统控制、统计计算、优化计算、神经网络、小波分析、偏微分方程、模糊逻辑、动态系统模拟、系统辨识和符号运算等领域.当前它的使用范围涵盖了工业、电子、医疗、建筑等各行各业.MATLAB中包括了图形界面编辑GUI,让使用者也可以象VB、VC、VJ、DELPHI等那样进行一般的可视化的程序编辑.在命令窗口(matlab command window)键入simulink,就出现(SIMULINK) 窗口.以往十分困难的系统仿真问题,用SIMULINK只需拖动鼠标即可轻而易举地解决问题,这也是近来受到重视的原因所在.
MATLAB 语言由美国 The MathWorks 开发,最早是由C.Moler用Fortran语言编写的,用来方便地调用LINPACK和EISPACK矩阵代数软件包的程序.后来他创立了MATHHWORKS公司,对MATLAB作了大量的、坚持不懈的改进.Cleve B.Moler是The MathWork公司的主席和首席科学家.曾任密歇系教授.他在两个计算机硬件制造商Intel公司的Hypercube组织和Arden Computers 公司工作了五年.他的主要专业兴趣在于数值分析和科学计算.他是MATLAB软件的创始者,也是著名的矩阵计算软件包LINPACK和EISPACK的著作这一,已撰写了三本有相关数值方法的教材.同时,他在SIAM(美国工业与应用数学学会)历任期刊编辑、委员会成员和副总裁,并从1996年开始担任理事会成员. 2. Matlab入门知识
Matlab变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符.在MATLAB中,变量名区分字母的大小写.
赋值语句:
变量=表达式 或 表达式
其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵. clear命令用于删除MATLAB工作空间中的变量.who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单.who命令只显示出驻留变量的名称,whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息.
利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下
3
来,扩展名是.mat.MAT文件的生成和装入由save和load命令来完成.常用格式为:
save 文件名 [变量名表] [-append][-ascii] load 文件名 [变量名表] [-ascii]
其中,文件名可以带路径,但不需带扩展名.mat,命令隐含一定对.mat文件进行操作.变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔.当变量名表省略时,保存或装入全部变量.-ascii选项使文件以ASCII格式处理,省略该选项时文件将以二进制格式处理.save命令中的-append选项控制将变量追加到MAT文件中. (1) 向量的创建 用步长生成法:
数组=初值:步长(增量):终值 >> a=1:0.5:3 a =
1.0000 1.5000 2.0000 2.5000 3.0000 用linspace生成:
数组=linspace(初值,终值,等分点数目) >> b=linspace(1,3,5) b =
1.0000 1.5000 2.0000 2.5000 3.0000 列向量用分号(;)作为分行标记: >> c=[1;2;3;4;] c = 1 2 3 4
若不想输出结果,在每一条语句后用分号作为结束符,若留空或用逗号结束,则在执行该语句后会把结果输出来. >> a+b; >> a+b ans =
2 3 4 5 6 (2) 矩阵的创建 直接输入:
最简单的建立矩阵的方法是从键盘直接输入矩阵的元素.具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔. >> A=[1 2 3;4 5 6;2 3 5] A =
1 2 3 4 5 6 2 3 5 利用矩阵函数创建: >> B=magic(3)%魔方阵
4

