线性代数Matlab入门作者刘进生太原理工大学数学系欢迎进入MATLAB世界TEL:60147692020/4/18MATLAB的发展史MATLAB的产生是与数学计算紧密联系在一起的。70年代中期,美国的穆勒教授及其同事在美国国家基金会的资助下,开发了线性代数的Fortran子程序库。不久,他在给学生开线性代数课时,为了让学生能使用子程序库又不至于在编程上花费过多的时间,便为学生编写了使用子程序的接口程序。他将这个接口程序取名为MATLAB,意为“矩阵实验室”。2020/4/18MATLAB的发展史80年代初他们又采用c语言编写了MATLAB的核心,成立了MsthWorks公司并将MATLAB正式推向市场。自1984年出版以来经过不断的研究,增加了许多功能。MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵.目前MATLAB巳成为国际公认的最优秀的数学应用软件之一。2020/4/18MATLAB的主要功能和特性主要功能:1.数值计算功能2.符号计算功能3.数据分析和可视化功能4.文字处理功能5.SIMULINK动态仿真功能主要特点:1.功能强大MATLAB含有30多个应用于不同领域的工具箱.2.界面友好MATLAB其指令表达方式与习惯上的数学表达式非常接近,编程效率高.3.扩展性强用户可自由地开发自己的应用程序2020/4/18MATLAB入门1.如何进入matlab软件:在桌面直接双击matlab图标,即可进入软件Matlab界面2020/4/18MATLAB主界面2020/4/18工作空间计算举例:输入命令:A=[152;364;689]a1=A'a2=det(A)a3=inv(A)Matlab界面2020/4/18工作空间计算举例:输入命令:A=[11-1;245;1-3-4]b=[12;6;10]X=A\b10436542122.zyxzyxzyx求解方程组例输出方程组的解:X=5.45453.0909-3.4545Matlab界面2020/4/18线性代数实验之向量的创建一、向量的创建:1.行向量:x=[1,2,3,4,5]或:x=[12345]2.列向量:x=[1;2;3;4]或:x=[1234]2020/4/18线性代数实验之向量的创建MATLAB(shuzu1)逗号或空格作用:分隔某一行的元素。分号作用:区分不同的行。Enter作用:输入列向量时,按Enter键开始一新行2020/4/18线性代数实验之向量运算二、向量的运算命令:1.向量a与b的加法:a+b2.向量a与b的减法:a–b3.数k乘以向量a:k*a4.向量a的转置:a’5.向量a与b的数量积:dot(a,b)或a*b’6.向量a的模:norm(a)2020/4/18线性代数实验之向量运算例:已知a={3,-1,-2},b={1,2,-1},c=3,求1.a+b,ca,(-2a)+3b2.dot(a,b),a*b’,norm(a)命令集:a=[3–1–2];b=[12–1];c=3;a1=a+ba2=c*aa3=(-2*a)+3*bb1=dot(a,b)b2=a*b’b3=norm(a)MATLAB(shuzu2)2020/4/18线性代数实验之矩阵创建例:A=[123;456;789]例:B=[123456789054321]一.矩阵的创建逗号或空格作用:分隔某一行的元素。分号作用:区分不同的行。Enter作用:输入矩阵时,按Enter键开始一新行MATLAB(matrix1)2020/4/18线性代数实验之矩阵运算A*k数乘矩阵A+B矩阵加法A*B矩阵乘法A^nA的n次幂A\B等价于inv(A)*BB/A等价于B*inv(A)A’A的转置rank(A)矩阵的秩二.矩阵的运算命令2020/4/18线性代数实验之矩阵运算det(A)A的行列式compan(A)A的伴随矩阵inv(A)或A^-1A矩阵求逆[B,jb]=rref(A)阶梯状行的最简式,jb表示基向量所在的列,A(:,jb)表示A列向量的基(最大无关组)rrefmovie(A)给出每一部化简过程[D,X]=eig(A)A的特征值与特征向量norm(A)矩阵的范数orth(A)矩阵的正交化poly(A)特征多顶式2020/4/18输入命令:a=[10-2;-132]b=[-210;2-36]c=a-bd=3*a+b线性代数实验之矩阵运算MATLAB(matrix3-1-1)2020/4/18输入命令:a=[2140;1-134]b=[131;0-12;1-31;40-2]c=a*b线性代数实验之矩阵运算MATLAB(matrix3-1-21)2020/4/18输入命令:a=[2-13;401]b=[052;1-34]c=a’+b’d=a*b’线性代数实验之矩阵运算MATLAB(matrix3-1-8)2020/4/18输入命令:a=[120;3-14;1-21]b=a^2+a-eye(3)线性代数实验之矩阵运算MATLAB(matrix3-1-51)2020/4/18输入命令:a=[111;11-1;1-11]b=[1-10;2-25;341]c=det(a*b)线性代数实验之矩阵运算MATLAB(matrix3-1-7)2020/4/18输入命令:a=[131;2-11;4-32]b=[102;21-1;-124]formatrat%有理格式c=a^-1d=inv(b)线性代数实验之矩阵运算MATLAB(matrix3-2-1)2020/4/18输入命令:a=[11-1;-211;111]b=[2;3;6]x=a^-1*b线性代数实验之矩阵运算MATLAB(matrix3-2-21)2020/4/18输入命令:a=[21-1;-210;1-10]b=[1-13;432]x=b*a^-1线性代数实验之矩阵运算MATLAB(matrix3-2-22)2020/4/18输入命令:a=[423;110;-123]x=(a-2*eye(3))^-1*a线性代数实验之矩阵运算MATLAB(matrix3-2-3)2020/4/18输入命令:a1=[42;-11]a2=[12;-32]A=[a1eye(2);zeros(2)a2]b1=[2-3;05]b2=[-21;12]B=[eye(2)b1;zeros(2)b2]C=A+BD=A*B线性代数实验之矩阵运算MATLAB(matrix3-3-1)2020/4/18输入命令:a1=[6];a2=[51;31];A=[a1zeros(1,2);zeros(2,1)a2]b1=[31;12];b2=[-12;2-3];B=[b1zeros(2);zeros(2)b2]C=inv(A)D=inv(B)线性代数实验之矩阵运算MATLAB(matrix3-3-2)2020/4/18输入命令:a1=[34;4-3];a2=[20;22];A=[a1zeros(2);zeros(2)a2]C=A^8D=det(A)线性代数实验之矩阵运算MATLAB(matrix3-3-4)2020/4/18输入命令:A=[1001;120-1;3-104;1451]B=[32-1-3-2;2-131-3;705-1-8]C=[11105;21-111;12-112;01233]a=rank(A)b=rank(B)c=rank(C)线性代数实验之矩阵运算MATLAB(matrix3-4-1)2020/4/18线性代数实验之矩阵运算sym符号变量,矩阵或向量定义函数三.符号矩阵及运算命令syma将a定义为符号变量sym(‘[ab]’)将a,b定义为符号向量sym(‘[ab;12]’)将a,b,1,2定义为符号矩阵sym(A)将A定义为符号矩阵将矩阵的方括号置于创建符号表达式的单引号中,元素可以是数字,符号或表达式.syms符号变量symsab将a,b定义为符号变量2020/4/18线性代数实验之矩阵运算符号变量、符号向量、符号矩阵的运算与数值变量、数值向量、数值矩阵的运算完全相同符号矩阵运算命令输入命令:A=sym('[121;14x;18x^2]')D=det(A)F=factor(D)MATLAB(Determinant1-1-2)2020/4/18线性代数实验之矩阵运算输入命令:symsabcdA=[1111;abcda^2b^2c^2d^2;a^3b^3c^3d^3]D=det(A)F=simple(D)MATLAB(Determinant)2020/4/18线性代数实验之线性相关性rank(A)矩阵的秩[B,jb]=rref(A)阶梯状行的最简式,jb表示基向量所在的列,A(:,jb)表示A列向量的基(最大无关组)rrefmovie(A)阶梯状给出每一部化简过程运算命令输入命令:a1=[1-241];a2=[03-75];a3=[-12-4-1];A=[a1'a2'a3']rrefmovie(A)Matlab界面2020/4/18输入命令:a1=[12-1];a2=[2-31];a3=[41-1];A=[a1'a2'a3']b1=[1112];b2=[3125];b3=[2013];b4=[1-101];B=[b1'b2'b3'b4']c1=[1213];c2=[4-1-5-6];c3=[1-3-4-7];c4=[21-10];C=[c1'c2'c3'c4'][a,ja]=rref(A);a=A(:,ja)[b,jb]=rref(B);b=B(:,jb)[c,jc]=rref(C);c=C(:,jc)线性代数实验之线性相关性MATLAB(matrix3-4-2)2020/4/18线性代数实验之解方程组一.求方程组的唯一解或特解输入命令:A=[123-2;2-1-2-3;32-12;2-331]b=[6;8;4;-8]formatrat%有理格式X=A\b833242123832262324321432143214321xxxxxxxxxxxxxxxx求解线性方程组例MATLAB(Determinant1-3-8)1.求解Ax=b:当det(A)≠0时,可用x=A\b2020/4/18输入命令:A=[123-2;2-1-2-3;32-12;2-331]b=[6;8;4;-8]formatrat%有理格式B=rref([Ab])X=B(:,5)833242123832262324321432143214321xxxxxxxxxxxxxxxx求解线性方程组例MATLAB(Determinant1-3-8a)2.求解Ax=b:当det(A)≠0时,也可用rref线性代数实验之解方程组2020/4/18输入命令:A=[2-315;-312-4;-1-231]b=[6;5;11]formatrat%有理格式X1=A\bB=rref([Ab])X2=B(:,5)的一个特解求线性方程组例113254236532432143214321xxxxxxxxxxxxMATLAB(equations4-3-31a)3.求Ax=b的一个特解:当A不满秩时,也可用A\b或rref线性代数实验之解方程组注当A不满秩时,用A\b可能有误差,用rref较好2020/4/18输入命令:A=[112-1;211-1;2212]formatrat%有理格式B=null(A,'r')symskX=k*B的通解求线性方程组例02220202432143214321xxxxxxxxxxxxMATLAB(equations4-2-21