数学实验教师:张智丰、梅红2009年2月教材:《数学实验》作者:张智丰科学出版社2008年出版参考书:《数学建模与实验》作者:陈光亭等自印绪论一、什么是数学实验所谓数学实验,就是利用计算机系统作为实验工具,以数学理论作为实验原理,以数学素材作为实验对象,以简单的对话方式或复杂的程序方式作为实验形式,以数值计算、符号演算或图形显示等作为实验内容,以实例分析、模拟仿真、归纳总结等为主要实验方法,以辅助学数学、辅助用数学或辅助做数学为实验目的,以实验报告为最终形式的上机实践活动。二、怎样做好数学实验根据数学实验的内容和形式,要做好数学实验,首先需要熟知实验内容的数学背景,熟悉实验所使用的工具,勤于动手,多实践,多练习,就能够轻松地完成数学实验。所谓工具,指计算机软件,主要使用MATLAB,所谓有详细的了解,是指对具体的MATLAB函数有详细的了解,清楚函数中参数的含义。课程采用先将MATLAB软件做一个简单的介绍,然后在每一个具体的实验中,介绍本实验涉及的具体函数,因此,就完成单个实验来说非常简单,我们通过逐个完成实验,逐步记忆函数的使用方法这样一个循序渐进的过程来学习本课程。MATLAB可以做什么?我们先来看一下MATLAB的强大功能数值计算函数定义函数求值线性代数矩阵运算特征向量图形绘制二维图形三维图形图像处理图像增强图像压缩有详细的了解,清楚函数中参数的含义。课程采用先将MATLAB软件做一个简单的介绍,然后在每一个具体的实验中,介绍本实验涉及的具体函数,因此,就完成单个实验来说非常简单,我们通过逐个完成实验,逐步记忆函数的使用方法这样一个循序渐进的过程来学习本课程。MATLAB可以做什么?我们先来看一下MATLAB的强大功能数值计算函数定义函数求值线性代数矩阵运算特征向量图形绘制二维图形三维图形图像处理图像增强图像压缩优化计算线性规划概率统计复变函数微分方程更多工具箱控制理论金融函数不动点计算信号处理样条函数偏微分方程三、MATLAB简介MATLAB是一种功能非常强大的科学计算软件。我们在本课程中将利用这个软件作为我们的实验平台,因此,在正式使用它之前,我们对这个软件作一个介绍,以便使用者对软件有一个整体的认识。MATLAB源于MatrixLaboratory,原意为矩阵实优化计算线性规划概率统计复变函数微分方程更多工具箱控制理论金融函数不动点计算信号处理样条函数偏微分方程三、MATLAB简介MATLAB是一种功能非常强大的科学计算软件。我们在本课程中将利用这个软件作为我们的实验平台,因此,在正式使用它之前,我们对这个软件作一个介绍,以便使用者对软件有一个整体的认识。MATLAB源于MatrixLaboratory,原意为矩阵实验室,经过近三十几年的发展,目前除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的任务简捷得多。当前流行的MATLAB7.0/Simulink7包括拥有数百个内部函数的主程序和六十几种工具箱(Toolbox)。工具箱又可以分为功能性工具箱和学科工具箱。功能工具箱用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具箱是专业性比较强的工具箱,控制工具箱,信号处数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的任务简捷得多。当前流行的MATLAB7.0/Simulink7包括拥有数百个内部函数的主程序和六十几种工具箱(Toolbox)。工具箱又可以分为功能性工具箱和学科工具箱。功能工具箱用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具箱是专业性比较强的工具箱,控制工具箱,信号处理工具箱,通信工具箱,图像处理工具箱等都属于此类。代码的开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主程序文件和各种工具箱都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序可以构造新的专用工具箱。实验一矩阵的基本运算(一)一、实验目的熟悉MATLAB软件中关于矩阵的基本命令,掌握利用MATLAB软件进行向量、矩阵的输入,向量与向量的运算,矩阵与矩阵的运算,矩阵与向量的运算。二、相关知识在线性代数中,我们曾经学过关于向量与向量的运算,主要包括向量与向量的加减法,数与向量的乘法;我们还学习过矩阵与矩阵的运算,主要包括矩阵的加减法,乘法,矩阵与向量的乘法,数与矩阵的乘法;矩阵的转置;矩阵求逆;矩阵求特征值;矩阵的初等变换;向量组的线性相关性等。我们现在要利用MATLAB软件的相关命令来完成这些运算。在MATLAB中,我们把向量看做1行n列(行向量)或n行1列(列向量)的矩阵,这样就可以将向量和矩阵放在一起讨论。二、相关知识为了进行矩阵的各种运算,首先要输入矩阵。在MATLAB中,矩阵的输入方法主要有两种,一种是在MATLAB的命令窗口中输入,这种方法适合输入一些阶数较低的矩阵,而对于一些阶数较高的矩阵,则最好采用建立磁盘文件的方法,这样便于多次利用,也方便在需要的时候可以修改数据。在在要利用MATLAB软件的相关命令来完成这些运算。在MATLAB中,我们把向量看做1行n列(行向量)或n行1列(列向量)的矩阵,这样就可以将向量和矩阵放在一起讨论。为了进行矩阵的各种运算,首先要输入矩阵。在MATLAB中,矩阵的输入方法主要有两种,一种是在MATLAB的命令窗口中输入,这种方法适合输入一些阶数较低的矩阵,而对于一些阶数较高的矩阵,则最好采用建立磁盘文件的方法,这样便于多次利用,也方便在需要的时候可以修改数据。在命令窗口输入的方法为:A=[1,2,3;4,5,6;7,8,9];这表示在命令窗口中输入矩阵,命令窗口输入的方法为:A=[1,2,3;4,5,6;7,8,9];987654321A这表示在命令窗口中输入矩阵,注意,逗号表示同行元素,也可用空格代替,分号表示换行。987654321A如果使用磁盘文件的方法,则需要建立一个以m为后缀的文本文件,它可以用MATLAB提供的编辑器编辑,也可以用任何一个能够编辑文本文件的编辑器来编辑,但我们建议大家使用MATLAB提供的编辑器来编辑,因为该编辑器不但提供了编辑环境,同时还提供了MATLAB程序的调试环境。该注意,逗号表示同行元素,也可用空格代替,分号表示换行。如果使用磁盘文件的方法,则需要建立一个以m为后缀的文本文件,它可以用MATLAB提供的编辑器编辑,也可以用任何一个能够编辑文本文件的编辑器来编辑,但我们建议大家使用MATLAB提供的编辑器来编辑,因为该编辑器不但提供了编辑环境,同时还提供了MATLAB程序的调试环境。该编辑器的使用方法是在MATLAB主菜单中选File—New—M-File,就打开了一个编辑器的窗口,如下图所示:文本文件的内容与在命令窗口中输入的相同。将文本文件放在一个特定的位置(某一个文件夹中),并将该位置加入到MATLAB的工作目录中,用File-Setpath来完成,这在绪论中已有介绍。使用时,先在命令窗口输入文件名,接着,就可以使用该文件中的所有数据了。注意:多个矩阵可以存放编辑器的使用方法是在MATLAB主菜单中选File—New—M-File,就打开了一个编辑器的窗口,如下图所示:文本文件的内容与在命令窗口中输入的相同。将文本文件放在一个特定的位置(某一个文件夹中),并将该位置加入到MATLAB的工作目录中,用File-Setpath来完成,这在绪论中已有介绍。使用时,先在命令窗口输入文件名,接着,就可以使用该文件中的所有数据了。注意:多个矩阵可以存放在一个文件中。关于一些常见的矩阵运算在MATLAB中的实现方法,我们将MATLAB中关于矩阵的基本命令和功能列表如下:序号功能MATLAB命令1求矩阵A的转置A’2求矩阵A与矩阵B的和A+B3求矩阵A减矩阵BA-B4求数k乘以矩阵Ak*A5求矩阵A乘以矩阵BA*B6求A的行列式det(A)7A的秩rank(A)8A的逆inv(A)9B左乘A的逆;或A右除B,即B*inv(A)B/A10B右乘A的逆;或A左除B,即inv(A)*BA\B11A的n次幂A^n12A与B的对应元素相乘A.*B13选择A的第i行生成一个行向量ai=A(i,:)14选择A的第j列生成一个列向量aj=A(:,j)15选择A的某几行、某几列上交叉元素生成A的子矩阵A(起始行:步长:终行,起始列:步长:终列),步长为1时可以省略16生成n阶零矩阵zeros(n)17生成n阶单位阵eye(n)18两个向量的内积a1*a2’MATLAB的一些其它命令:序号功能MATLAB命令1存储工作空间变量,即命令窗口使用过的变量save文件名变量名2列出工作空间的所有变量whos3help函数名可查阅该命令的用法help命令4运行演示程序demodemo命令三、实验内容1.已知矩阵A、B、b如下:在磁盘上建立一个名为sy1sj.m的文件,将矩阵A、B、b输入其中;031948118763812654286174116470561091143A503642237253619129113281510551201187851697236421B1197531b2.在1的基础上,在磁盘上建立文件sy1cx.m,完成下列计算:1)X11=A’,X12=A+B,X13=A-B,X14=AB;2)X21=|A|,X22=|B|;3)X31=R(A),X32=R(B);4)X4=A-1;5)作矩阵C,其元素为A的元素乘以每个元素的行标再乘以每个元素的列标。3.完成实验报告。实验二矩阵的基本运算(二)一、实验目的进一步熟悉MATLAB软件中关于矩阵的各种命令,掌握利用MATLAB软件求矩阵的特征值,进行矩阵的初等变换;讨论向量组的线性相关性等运算。二、相关知识在线性代数中,我们曾经学过求矩阵特征值;对矩阵进行初等变换以达到一定的目的,还讨论过向量组的线性相关性等问题。我们现在要利用MATLAB软件的相关命令来完成这些运算。相关的MATLAB的命令和功能列表如下:序号功能MATLAB命令1A的特征值eig(A)2A的特征向量矩阵X及A的特征值组成的对角阵[X,D]=eig(A)3将非奇异矩阵正交化orth(A)4A的第i行与第j行互换A([i,j],:)=A([j,i],:)5A的第i列与第j列互换A(:,[i,j])=A(:,[j,i])6用k乘以A的第i行A(i,:)=k*A(i,:)7A的i行加上第j行k倍A(i,:)=A(i,:)+k*A(j,:)7A的i列加上第j列k倍A(:,i)=A(:,i)+k*A(:,j)7由已定义的矩阵A,E,O,A生成矩阵BB=[A,E;O,A]8求A的列向量组的一个极大线性无关组rref(A)三、实验内容1.利用实验一建立的文件sy1sj.m中的数据,完成下列运算,并将程序写在文件sy21.m中:1)求解矩阵方程XA=B中的解矩阵X6;2)求满足方程组AX=b’的解向量X7;3)求X6的特征向量组,记为X8,相应的对角形记为D;4)计算X9=B2(A-1)2;2.利用实验一建立的文件sy1sj.m中的数据,完成下列运算,并将程序写在文件sy22.m中:1)生成矩阵A的行向量组:a1,a2,a3,a4,a5,a6;2)生成矩阵A