您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 第6章MATLAB数学实验
第6章MATLAB数学实验没有大胆的猜测,就做不出伟大的发现。——牛顿MATLAB是MatrixLaboratory的缩写,是一个集数值计算、图形处理、符号运算、文字处理、数学建模、实时控制、动态仿真和信号处理等功能为一体的数学应用软件,而且该系统的基本数据结构是矩阵,又具有数量巨大的内部函数库和多个工具箱,使得该系统迅速普及到个领域,尤其在大学校园里,许多学生借助它来学习大学数学和计算方法等课程,并用它做数值计算和图形处理等工作。下面介绍它的基本功能,并用它做与线性代数相关的数学实验。在正确完成安装MATLAB软件之后,直接双击系统桌面上的MATLAB图标,启动MATLAB,进入MATLAB默认的用户主界面,界面有3个主要的窗口:命令窗口(CommendWindow),当前目录窗口(CurrentDirectory),工作间管理窗口(Workspace)。如图6.1所示。图6.1命令窗口是和MATLAB编译器连接的主要窗口,“”为运算提示符,表示MTALAB处于准备状态,当在提示符后输入一段正确的运算式时,只需按Enter键,命令窗口中就会直接显示运算结果。如图6.2所示。图6.2数据的默认格式为五位有效数字,可用format命令改变输出格式。Help是获取帮助的命令,在它之后应该跟一个主题词。例如,helpformat,系统就会对format的用法提供说明,因此它对初学者是非常有用的。当需要编写比较复杂的程序时,就需要用到M文件,而只需要将所有命令按顺序放到一个扩展名.m的文本文件下,每次运行只需输入该M文件的文件名即可。下面介绍MATLAB程序设计中常用的程序控制语句和命令。●顺序结构是最简单的程序结构,在编写程序后,系统将按照程序的物理位置顺序执行。●选择语句。在编写程序时,往往需要根据一定的条件来执行不同的语句,此时,需要使用分支语句来控制程序的进程,通常使用if-else-end结构来实现这种控制。if-else-end结构是:if表达式执行语句1else执行语句2end此时,如果表达式为真,则系统执行语句1;如果表达式为假,则系统执行语句2.例如比较a和b的大小,其中a=40,b=10.程序设计:cleara=40;b=10;ifabdisp(‘ba’)elsedisp(‘ab’)end运行结果:ab●分支语句。另外,MATLAB语句中还提供了switch-case-otherwise-end分支语句,其使用格式如下:switch开关语句case条件语句执行语句,...,执行语句case(条件语句1,条件语句2,条件语句3,…)执行语句,...,执行语句…….otherwise执行语句,...,执行语句end在上面的分支语句中,当某个条件语句的内容与开关语句的内容相匹配时,系统将执行其后的语句,如果所有的条件语句与与开关条件都不相符合时,系统将执行otherwise后的语句。●循环语句。当遇到许多有规律的重复运算时,可以方便地使用以下两种循环语句。◆for循环基本格式是:fori=表达式,执行语句,…,执行语句end上述结构是对循环次数的控制。例求1+2+…+100的值。程序设计:》sum=0;》fori=1:100Sum=sum+i;end》sumsum=5050for循环可以重复使用,即可以多次嵌套。◆while循环的判断控制可以是逻辑判断语句,因此,它的循环次数可以是一个不定数,这样就赋予了它较for循环更广泛的用途。其使用格式如下:while表达式执行语句,...,执行语句End◆常用指令。终止命令break语句一般用在循环控制中,通过if使用语句。当if语句满足一定条件时,break语句将被调用,系统将在循环尚未结束时跳出当前循环。继续命令continue一般也用在循环控制中,通过if使用语句。当if语句满足一定条件时,continue语句将被调用,系统将不再执行相关的执行语句,并不会跳出当前循环。等待用户反应命令pause用于使程序暂时终止运行,等待用户按任意键后继续运行。该语句适合于在调试程序时需要查看中间结果的情况。除了在程序设计中需要经常用到上述命令外,还有一些常用命令在其他操作中也经常使用,比如clr可以清除工作窗口,type可以显示文件内容,quit可以退出MATLAB等。6.1矩阵的输入与特殊矩阵的生成6.1.1矩阵的输入MATLAB是以矩阵为基本变量单元的,因此矩阵的输入非常方便。输入时,矩阵的元素用方括号括起来,行内元素用逗号分隔或空格分隔,各行之间用分号分隔或直接按回车键。例6.1输入矩阵A=112103456。解在命令窗口中输入》A=[112;-103;4-56]A=1121034566.1.2矩阵的结构操作输入矩阵后,可以对矩阵进行的主要操作包括矩阵的扩充,矩阵元素的提取和变换,矩阵元素的部分删除等。下面对其作简单介绍。1.矩阵的扩充例如,用下述命令可以在上述矩阵A下面再加上一个行向量:》A(4,:)=[132]A=112103456132下述命令可以在上述矩阵A下面再加上一个列向量:》A(:,4)=[-1032]A=112-1-10304-56313222.矩阵元素的提取和变换可以用下述命令提取上述矩阵A的第3行第1列的元素:》A(3,1)ans=4可以用下述命令提取上述矩阵A的第1行第3列的元素:》A(:,[1,3])ans=12-134612可以用下述命令提取矩阵的上三角和下三角部分及对角线元素:triu(A)——提取矩阵A的上三角部分;tril(A)——提取矩阵A的下三角部分;diag(A)——提取矩阵A的对角线元素。可以用下列命令对矩阵进行翻转和旋转:fliplr(A)——矩阵A左右翻转;flipud(A)——矩阵A上下翻转;rot90(A)——矩阵A整体逆时针旋转90度。3.矩阵元素的删除可以用下述命令删除上述矩阵A的第2行的元素:》A(2,:)=[]ans=114-5136.1.3特殊矩阵的生成某些特殊矩阵可以直接调用相应的函数得到,例如:zeros(m,n)——生成一个m行n列的零矩阵;ones(m,n)——生成一个m行n列元素都是1的矩阵;eye(n)——生成一个n阶的单位矩阵;rand(m,n)——生成一个m行n列的随机矩阵;vander(V)——生成以向量V为基础向量的范德蒙德矩阵;magic(n)——生成一个n阶魔方矩阵;hilb(n)——生成一个n阶希尔伯特矩阵;invhilb(n)——求n阶的希尔伯特矩阵的逆矩阵。例6.2随机生成一个6×7的矩阵。解》rand(6,7)ans=0.13650.28440.51550.52980.46110.41540.99010.01180.46920.33400.64050.56780.30500.77890.89390.06480.43290.20910.79460.87440.43870.19910.98830.22590.37980.05920.01500.49830.29870.58280.57980.78330.60290.76800.21400.66140.42350.76040.68080.05030.97080.6435例6.3生成一个以向量(1,2,3,5)为基础向量的范德蒙德矩阵。解》vander([1;2;3;5])ans=11118421279311252551习题1.输入矩阵A=378156705810115761829,并提取矩阵A的第3列和第2行元素。2.生成一个10×12阶的随机矩阵,并提取该矩阵的上三角部分。3.生成一个5阶单位阵、6阶全1矩阵,4阶魔方阵。4.求4阶希尔伯特矩阵及其逆矩阵。5.对矩阵A=212301452368进行左右、上下和90度旋转。6.2矩阵的运算6.2.1矩阵的代数运算如果已经输入矩阵A和B,则可由下述命令对其进行运算:A——A的转置;A+B——加法;k*A——数k乘A;A*B——乘法;inv(A)——A的逆阵;A^x——A的x次方;A\B——1AB;A/B——B1A。例6.4设A=121012364,B=101022351,求A、A+B、AB、2A、1AB。解程序设计结果如下:》A=[12-1;012;-364]A=121012364》B=[-101;022;351]B=101022351》Aans=103216124》A+Bans=0200340115》A*Bans=4146124153213》A^2ans=42161310152431》inv(A)*Bans=1.00000.13041.347800.34780.260900.82610.86966.2.2矩阵的特征参数运算在进行科学运算时,常常要用到矩阵的特征参数,如矩阵的行列式、秩、迹、条件书数等,在MATLAB可以用下述命令轻松地进行这些运算。det(A)——A的行列式;rank(A)——A的秩;trace(A)——A的迹;cond(A)——A的条件数;size(A)——输出A的行数和列数。例6.5求向量组T0-1,2,3,,T1401,,,,T3,1,4,2,T2,2,2,0的秩。解程序运行结果如下:》A=0132141220423120》rank(A)ans=3故可知向量组的秩为3。例6.6判断向量组1=T1,1,2,3,2=T1,1,1,1,3=T2,0,3,3,4=T3,1,5,4是否线性相关?解由1,2,3,4所组成的矩阵A=1123110121353134,只需求出A的秩或者A的行列式,即可判断其线性相关性,因此,在MATLAB命令窗口下,键入:A=[1123;1-101;2135;3134];rank(A)ans=3即r(A)=34,故1,2,3,4线性相关。例6.7计算D=123456789。解程序运行结果如下:》A=[123;456;789];》D=det(A);ans=0即D=0。例6.8计算1111111111111111xxxx。解程序运行结果如下:symsxyA=[1+x111;11+x11;111+x1;1111+x];det(A)ans=2*x*y^2+2*x^2*y+x^2*y^2习题1、设A=10510126815,B=1075243129,求A、AB、AB、2A、1BA。2、求向量组T0-1,3,4,,T3,4,8,1,T7,1,5,4,T2,12,2,0,T5,5,6,10的秩。3、计算5283312402301052。4、计算1234101101111110aaaa。5、判断向量组:1=T1,1,3,1,2=T1,3,1,5,3=T2,6,2,10,4=T3,1,15,13,5=T1,3,3,0的线性相关性。6.3线性方程组的求解在MATLAB中,求解线性方程组的方法有很多,本实验将介绍两个命令来直接求解。rref(A)——A的最简行阶梯形矩阵;linesolve(A,y,options)——求解Ax=y;null(A,’r’)——求齐次方程组Ax=0的基础解系。例6.9将矩阵A=71110148243121115化为最简行阶梯形矩阵。解程序运行结果:A=[71-1101;48-243;121-15];rref(A)ans=1.0000002.20000.800001.000006.33331.5000001.000031.73336.1000例6.10求齐次方程组12341234123400022232xxxxxxxxxxxx的基础解系及全部解。解该方程组
本文标题:第6章MATLAB数学实验
链接地址:https://www.777doc.com/doc-2197356 .html