资源描述
MATLAB与科学计算一、前言一、前言MATLAB:matrix laboratory的缩写,的缩写,矩阵实验室的意思。一开始它是一种矩阵实验室的意思。一开始它是一种专门用于矩阵数值计算的软件。自专门用于矩阵数值计算的软件。自MATLAB4.0版本问世以来,该软件成版本问世以来,该软件成为最具有吸引力,应用最为广泛的科为最具有吸引力,应用最为广泛的科学计算语言。我们这个课就拿学计算语言。我们这个课就拿MATLAB6.1版本来讲。(版本来讲。(6.x版本大同版本大同小异)小异)学习该软件的必要性:学习该软件的必要性:目前,目前,MATLAB软件不仅走入企业、公软件不仅走入企业、公司和科研机构,而且在高等院校司和科研机构,而且在高等院校也是从大学生到博士生都必须掌也是从大学生到博士生都必须掌握的一项基本技能,是必不可少握的一项基本技能,是必不可少的计算工具,。的计算工具,。MATLAB功能:功能:数值计算、符号数值计算、符号运算和图形处理。运算和图形处理。学习它的意义:学习它的意义:随着计算机科学随着计算机科学和计算软件的发展,数学系学生和计算软件的发展,数学系学生必须掌握一门好的计算软件。这必须掌握一门好的计算软件。这是我们就业、继续身造或做科研是我们就业、继续身造或做科研工作所要用到的。是当代大学生工作所要用到的。是当代大学生必备的一项技能。必备的一项技能。其它计算软件:其它计算软件:MATHEMATIC(数学分析问题的计算);(数学分析问题的计算);IDL(航天、控制),(航天、控制),FOETRAN、BASIC(科学计算)。可以说一(科学计算)。可以说一个人掌握了一门计算软件,再学个人掌握了一门计算软件,再学习其它计算软件很容易。习其它计算软件很容易。MATLAB桌面平台:桌面平台:(1)(1)主窗口:整个大的窗口(其它主窗口:整个大的窗口(其它几个窗口都包括在其中)几个窗口都包括在其中)(2 2)命令窗口()命令窗口(command command windowwindow):):为运算提示符,表为运算提示符,表示示MATLABMATLAB在准备状态。当在提示在准备状态。当在提示符后输入一段运算式并按回车键符后输入一段运算式并按回车键后,就给出计算结果后,就给出计算结果(3 3)历史窗口)历史窗口(command history)(command history):保留命令历史记录,这方便于:保留命令历史记录,这方便于使用者查询。双击历史窗口中的使用者查询。双击历史窗口中的某一行命令,即可在命令窗口中某一行命令,即可在命令窗口中执行该命令。执行该命令。(4 4)当前目录窗口()当前目录窗口(current current directorydirectory):在当前目录窗口中):在当前目录窗口中可显示或改变当前目录,也可以可显示或改变当前目录,也可以显示当前目录下的文件,并提供显示当前目录下的文件,并提供搜索功能。搜索功能。(5)(5)发行说明书窗口(发行说明书窗口(launch launch padpad):用来说明用户所拥有的用来说明用户所拥有的MathworksMathworks公司产品的工具包、演公司产品的工具包、演示以及帮助信息。示以及帮助信息。(6 6)工作间管理窗口)工作间管理窗口(workspaceworkspace):显示目前内存中所显示目前内存中所有的有的MATLABMATLAB变量的变量名、数学结变量的变量名、数学结构、字节数及其类型。构、字节数及其类型。命令窗口查询帮助:命令窗口查询帮助:help+help+函数名,函数名,当用户知道函数名字,而不知道当用户知道函数名字,而不知道其用法时,用其用法时,用helphelp命令可以去了命令可以去了解此函数的用法。解此函数的用法。如:如:help invhelp invMATLABMATLAB标点的含义:标点的含义:(1 1)分号;)分号;区分行以及取消区分行以及取消运行显示等。例:运行显示等。例:A=1,2;3,4A=1,2;3,4与与A=1,2;3,4A=1,2;3,4;的区别。的区别。(2)(2)逗号,逗号,区分列及函数参区分列及函数参数分隔符等。例:数分隔符等。例:=1,2;3,4=1,2;3,4,B=1,4,3;3,2,1;4,5,6B=1,4,3;3,2,1;4,5,6(3)(3)小括号():指定运算过程的小括号():指定运算过程的先后次序等。例:先后次序等。例:x=0.5;x=0.5;y=sin(x)/(2+cos(x)y=sin(x)/(2+cos(x)z=sin(x)/2+cos(x)z=sin(x)/2+cos(x)(4)(4)方括号方括号 :矩阵定义标志等。:矩阵定义标志等。见上。见上。(5 5)续行号)续行号:例:例:y=sin(x)/(2+cos(x)y=sin(x)/(2+cos(x)也可写为也可写为 y=y=sin(xsin(x)/(2+cos(x)/(2+cos(x)只能在编写文件时使用,不能在命只能在编写文件时使用,不能在命令窗口使用。令窗口使用。(6)(6)百分号百分号%:注释标记,该行:注释标记,该行%以以后的语句不执行。后的语句不执行。a=0.5 a=0.5%这里这里a a为常数为常数%a=0.5;%a=0.5;(6 6)等号)等号=:赋值标记。见上。:赋值标记。见上。(7 7)单引号)单引号 :字符串表示符,:字符串表示符,单引号里面的内容为字符串。例:单引号里面的内容为字符串。例:a=a=xingtaixingtai college college。(8 8)冒号)冒号:有多种应用功:有多种应用功能,学习过程中注意。能,学习过程中注意。二、数值计算二、数值计算变量:变量:MATLAB语言不需要对所使用的语言不需要对所使用的变量进行事先声明,也不需要指定其类变量进行事先声明,也不需要指定其类型,它会自动根据所赋予变量的值或所型,它会自动根据所赋予变量的值或所进行的操作来确定变量的类型。如果变进行的操作来确定变量的类型。如果变量重新赋值将会用新值代替旧值。如:量重新赋值将会用新值代替旧值。如:a=1 b=0.5 c=a*b c=3变量命名的规则:变量命名的规则:(1 1)变量名区分大小写;)变量名区分大小写;(2 2)变量名长度不能超过)变量名长度不能超过3131位;位;(3 3)必须以字母开头,变量名中)必须以字母开头,变量名中可包含字母、数字、下划线,但可包含字母、数字、下划线,但不能使用标点。不能使用标点。常量:常量:MATLAB中有些预定义的中有些预定义的变量,这些特殊的变量称为常量。变量,这些特殊的变量称为常量。常用到的有:常用到的有:i,j:虚数单位;虚数单位;pi:;NaN:表示不定值表示不定值,比如比如0/0;inf:无穷大(无穷大(infinit),比如),比如1/0。算术操作符:算术操作符:+:加,正号;:加,正号;-:减,负号;减,负号;*,,/:分别为矩阵乘,乘:分别为矩阵乘,乘方,左除,右除;方,左除,右除;.*,.,.,./:分别为数组:分别为数组乘,乘方,左除,右除;乘,乘方,左除,右除;如:如:a1=2;a2=1,2,3,4;b2=4,3,2,1;a1+a2a1-a2a2-a1a1*a2a1./a2%a1/a2是错误的写法是错误的写法a1.a2 a2-b2a2+b2a2.*b2%a2*b2是错误的写法是错误的写法a2./b2b2./a2a2.b2例例 已知水的黏度随温度的变化公式已知水的黏度随温度的变化公式为为=0/(1+at+bt2)其中)其中0 0=1.78510=1.78510-3-3,a=0.03368,b=0.000221,a=0.03368,b=0.000221,求水在求水在0 0,2020,4040,8080时的黏度。时的黏度。程序如下:程序如下:miu0=1.785e-3;a=0.03368;b=0.000221;t=0:20:80 miu=miu0./(1+a*t+b*t.2)运行后的结果为运行后的结果为:miu=0.0018 0.0010 0.0007 0.0005 0.0003字符串:字符串:字符串的约定(字符串的约定(1)字符串用单引)字符串用单引号括起来;(号括起来;(2)字符串的每个)字符串的每个每个字符(包括空格)都是字符每个字符(包括空格)都是字符数组的一个元素数组的一个元素.例 s=xingtai college 向量的生成:向量的生成:(1)直接输入:如)直接输入:如a=1,2,5,3 (2)利用冒号表达式生成:如:利用冒号表达式生成:如:b=2:2:10,此时此时 可省略,步长可省略,步长为为1时,步长可省略。第一个数为时,步长可省略。第一个数为首元素的值,第首元素的值,第2个数为步长或差个数为步长或差值,第三个数为尾元素的限值,不值,第三个数为尾元素的限值,不能超过这个值。如能超过这个值。如b=2;2:11等价于等价于b=2:2:10(3)线性等份向量生成:)线性等份向量生成:y=linspace(x1,x2,n),生成生成n维向维向量,使得量,使得y(1)=x1,y(n)=x2。如:。如:y=linspace(1,100,6)。l向量的基本运算向量的基本运算(1)向量的加减:用)向量的加减:用+、-。同维。同维向量才可以加、减。相应元素加向量才可以加、减。相应元素加减减(2 2)向量与数可以加、减。用)向量与数可以加、减。用+、-。数与向量的每个元素进行作用。数与向量的每个元素进行作用。(3 3)向量与数可以相乘。用)向量与数可以相乘。用*。(4)(4)向量与数可以相除。向量向量与数可以相除。向量/数,数,数数././向量。向量。(5 5)两个向量点积。必须是同维)两个向量点积。必须是同维向量。用向量。用dot(a,bdot(a,b)。(6 6)两个向量叉积。)两个向量叉积。Cross(a,b),a,bCross(a,b),a,b必须有是必须有是3 3维且次维且次序不能颠倒序不能颠倒,。(7 7)混合积。由以上两个函数实现。)混合积。由以上两个函数实现。dot(a,cross(b,cdot(a,cross(b,c)矩阵的生成:矩阵的生成:(1)直接输入直接输入:如如:a=1,3,4;4,3,2.(2)(2)创建创建M M文件输入大矩阵文件输入大矩阵:当矩阵当矩阵很大时很大时,直接输入显得很笨直接输入显得很笨,出错出错不易修改不易修改.我们可以编写一个我们可以编写一个M M文文件件,M,M文件的扩展名必须是文件的扩展名必须是m.m.例例 编写一个名为编写一个名为matrix.mmatrix.m(名字名字自己随便起自己随便起)的的M M文件如下文件如下:%matrix.mmatrix.mmat=1,2,3,3;3,4,5,1;3,2,1,4;8,mat=1,2,3,3;3,4,5,1;3,2,1,4;8,9,7,59,7,5 在命令窗口中输入在命令窗口中输入matrix,matrix,就就会运行该文件会运行该文件.查看矩阵的结构可查看矩阵的结构可用用size(matsize(mat).).矩阵运算矩阵运算:(1)+(1)+、-、*:加、减、乘运算。:加、减、乘运算。(2 2)矩阵的除法有两种形式)矩阵的除法有两种形式:左除左除“”和右除和右除/.右除是先计算右除是先计算逆再做乘法逆再做乘法;而左除不计算逆直接而左除不计算逆直接进行除法运算进行除法运算,这样可避免奇异矩这样可避免奇异矩阵无法求逆带来的麻烦阵无法求逆带来的麻烦.如如:A=1,2,3,2;3,2,:A=1,2,3,2;3,2,4,1;3,1,5,6;2,5,3,2,4,1;3,1,5,6;2,5,3,2,b=1;3;2;1,b=1;3;2;1,求方程组求方程组Ax=bAx=b的解的解.由于由于rank(Arank(A)=)=rank(Brank(B)=4(B)=4(B为增广为增广矩阵矩阵),),所以有唯一解所以有唯一解,x=Ab,x=Ab,或或x=x=inv(Ainv(A)*b.)*b.又如又如:A=361,625,961,1444,1936;1,1,1,A=361,625,961,1444,1936;1,1,1,1,1,b=1;11,1,b=1;1,求方程组求方程组Ax=bAx=b的的解解.由于由于rank(Arank(A)=)=rank(Brank(B)=2(B)=2(B为增为增广矩阵广矩阵),),所以有无穷多个解所以有无穷多个解,MATLAB,MATLAB中用除法解方程组时所得中用除法解方程组时所得到的解是所有解中范数最小的一个到的解是所有解中范数最小的一个x=Abx=Ab。(3 3)矩阵与常数间的运算)矩阵与常数间的运算:+:+、-、*运算是数与矩阵的每个元素进行运算是数与矩阵的每个元素进行运算,除法运算,只能常数做除运算,除法运算,只能常数做除数。数。(4 4)矩阵求逆:)矩阵求逆:inv(Ainv(A)为为A A的逆的逆(inverse).(inverse).(5 5)求转置矩阵)求转置矩阵:A.:A.(6 6)求矩阵的行列式)求矩阵的行列式:det(Adet(A),(determinant,(determinant是行列式是行列式)。(7 7)矩阵幂运算:用)矩阵幂运算:用.如如A3,A3,表示表示A*A*AA*A*A。(8 8)矩阵指数运算:)矩阵指数运算:expm(A),Aexpm(A),A为为方阵。方阵。(9 9)矩阵对数运算)矩阵对数运算:logm(A),Alogm(A),A为为方阵。方阵。如:如:a=rand(3)a=rand(3);%成生一个成生一个3 3阶阶随机矩阵随机矩阵 b=b=expm(aexpm(a)c=c=logm(blogm(b)(1010)矩阵开方:)矩阵开方:sqrtm(asqrtm(a).).(11)(11)求矩阵呢的秩:求矩阵呢的秩:rank(arank(a).).特殊矩阵的生成:特殊矩阵的生成:(1 1)zeros(nzeros(n):):生成生成 nnnn阶阶0 0矩阵。矩阵。(2 2)zeros(m,nzeros(m,n):):生成生成 mnmn阶阶0 0矩阵。矩阵。(3 3)zeros(size(azeros(size(a):):生成与生成与a a阶数阶数相同的相同的0 0矩阵。矩阵。(4 4)eye(neye(n):):生成生成 n n阶单位矩阵。阶单位矩阵。(5 5)eye(m,neye(m,n):):生成生成 m mn n阶单位矩阶单位矩阵。阵。(6 6)eye(size(aeye(size(a):):生成与生成与a a阶数相阶数相同的单位矩阵。同的单位矩阵。(7 7)ones(nones(n):):生成生成 n n阶全阶全1 1矩阵。矩阵。(8 8)ones(m,nones(m,n):):生成生成 m mn n阶全阶全1 1矩矩阵。阵。(9 9)ones(size(aones(size(a):):生成与生成与a a阶数阶数相同的全相同的全1 1矩阵。矩阵。(1010)rand(nrand(n):):生成生成 nnnn阶随机矩阶随机矩阵,其元素值在阵,其元素值在0 0和和1 1之间。之间。(1111)rand(m,nrand(m,n):):生成生成 mnmn阶随机阶随机矩阵。矩阵。(1212)randrand:生成一个随机数。:生成一个随机数。(1313)rand(size(arand(size(a):):生成与生成与a a阶阶数相同的随机矩阵。数相同的随机矩阵。l矩阵的特殊操作:矩阵的特殊操作:(1 1)变维操作)变维操作reshape(a,m,nreshape(a,m,n):):把把矩阵矩阵a a变成变成nnnn阶矩阵。如阶矩阵。如 a=1:12,reshape(a,2,6),a=1:12,reshape(a,2,6),reshape(a,3,4)reshape(a,3,4)。注意变维操作。注意变维操作要保证元素个数一致。要保证元素个数一致。例例s=1:12;s=1:12;c=zeros(3,4);c=zeros(3,4);c(:)=s(:);%c(:)=s(:);%符号符号“:”表示表示变维操作,这两个矩阵必须预先变维操作,这两个矩阵必须预先定义维数,结果定义维数,结果c c取的是取的是s s的元素。的元素。(2 2)对角元素抽取)对角元素抽取diag(a,kdiag(a,k)(注:(注:diagonaldiagonal为对角线的意思):抽为对角线的意思):抽取矩阵取矩阵a a的第的第k k条对角线的元素作条对角线的元素作为向量,为向量,k=0 k=0 时为主对角线,时为主对角线,k k为为正值时为上方第正值时为上方第k k条对角线,条对角线,k k为为负值时为下方第负值时为下方第k k条对角线。条对角线。diag(adiag(a)相当于相当于diag(a,0).diag(a,0).例例 a=rand(3);v=a=rand(3);v=diag(adiag(a)说明:如果说明:如果b b是一个向量,则是一个向量,则diag(bdiag(b)为对角矩阵,其对角线元为对角矩阵,其对角线元素为素为b b的元素。如:的元素。如:b=1:3,diag(b).b=1:3,diag(b).(3 3)tril(atril(a)()(注:注:triangle triangle low):low):提取矩提取矩a a的主下三角。的主下三角。(4 4)tril(atril(a,k):k):提取矩提取矩a a的第的第k k条条对角线下面部分。对角线下面部分。k=0 k=0 时为主对时为主对角线,角线,k k为正值时为上方第为正值时为上方第k k条对条对角线,角线,k k为负值时为下方第为负值时为下方第k k条对条对角线。角线。(5 5)triu(atriu(a,k)(k)(注:注:triangle triangle up):up):提取矩提取矩a a的第的第k k条对角线上面条对角线上面部分。部分。逻辑运算符:逻辑运算符:(1 1)=:等于。:等于。(2 2)=:不等于。:不等于。(3 3):小于。:小于。(4 4):大于。:大于。(5 5)=:小于等于。:小于等于。(6 6)=:大于等于。:大于等于。(7 7)&:&:逻辑与。逻辑与。(8 8)|:逻辑或。:逻辑或。(9 9):逻辑非。:逻辑非。说明:说明:在关系比较中,若双方为同在关系比较中,若双方为同维数组(矩阵),则比较的结果维数组(矩阵),则比较的结果也是同维数组(矩阵)。它们的也是同维数组(矩阵)。它们的元素有元素有0 0和和1 1组成。对应位置上的组成。对应位置上的元素满足比较关系时为元素满足比较关系时为1 1,否则为,否则为0 0。当常数与数组(矩阵)比较时,。当常数与数组(矩阵)比较时,结果与数组(矩阵)同维,其值结果与数组(矩阵)同维,其值依次为常数与数组元素依次比较依次为常数与数组元素依次比较的结果。例:的结果。例:a=1:3;4:6;7:9x=5y=x=a运行结果y=0 0 0 0 1 1 1 1 1逻辑运算的意义是:与:当运算双方的对应元素值都为非0时,结果为1,否则为0;或:当运算双方的对应元素值有一非0时,结果为1,否则为0;非:当运算数组(矩阵)的对应位置上的元素值为0时,结果为1,否则为0。例a=1,2;3,2;b=0,1;3,0;d=a&b e=a|b f=b算术运算、比较运算、逻辑与或算术运算、比较运算、逻辑与或非运算的优先级:先比较运算、非运算的优先级:先比较运算、再算术运算、最后逻辑与或非运再算术运算、最后逻辑与或非运算。算。常用的一些函数常用的一些函数(直接调用直接调用):sin(x):正弦函数正弦函数(sine);例例:x=-pi:0.1:pi;y=sin(x);plot(x,y)asin(x):反正弦函数反正弦函数(anti-sine);cos(x):余弦函数余弦函数(cosine);acos(x):反反余弦函数余弦函数(anti-cosine);tan(x):正切函数正切函数(tangent);atan(x):反正切函数反正切函数(anti-tangent);cot(x):余切函数余切函数(cotangent);acot(x):反反余切函数余切函数(anti-cotangent);sec(x):正割函数正割函数(secant);asec(x):反正割函数反正割函数(anti-secant);csc(x):余割函数余割函数(cosecant);acsc(x):反余割函数反余割函数(anti-cosecant);sinh(x):双曲正弦双曲正弦(hyperbolic sine);asinh(x):反双曲正弦反双曲正弦(anti-hyperbolic sine);cosh(x):双曲余弦双曲余弦(hyperbolic cosine);acosh(x):反双曲余弦反双曲余弦(anti-hyperbolic cosine);tanh(x):双曲正切函数双曲正切函数(hyperbolic tangent);atanh(x):反双曲正切函数反双曲正切函数(anti-hyperbolic tangent);coth(x):双曲余切函数双曲余切函数(hyperbolic cotangent);acoth(x):反双曲余切函数反双曲余切函数(anti-hyperbolic cotangent);exp(x):e指数函数指数函数(exponent);log(x):自然对数函数自然对数函数(logarithm);log10(x):以以10为底的对数为底的对数;log2(x):以以2为底的对数为底的对数;sqrt(x):平方根函数平方根函数(square root);abs(x):求模函数求模函数(absolute)等等多项式表示方法:多项式表示方法:在在MATLAB中多项式中多项式p(x)=anxn+an-1xn-1+a0是以向量是以向量p=an,an-1,a0的形式储存的的形式储存的.(1)系数向量直接输入系数向量直接输入:例输入多项式例输入多项式x3-5x2+6x-33.p=1,-5,6,-33;poly2sym(p)%polynomial多项多项式式,将系数向量表示成符号多项式将系数向量表示成符号多项式(2)(2)矩阵的特征多项式输入矩阵的特征多项式输入:例例 a=1,2,3;2,3,4;3,4,5;a=1,2,3;2,3,4;3,4,5;p=p=poly(apoly(a);%);%求求a a的特征多项式系数的特征多项式系数向量向量 p1=poly2sym(p);%p1=poly2sym(p);%即为即为a a的特征多的特征多项式项式(3)由根创建多项式由根创建多项式:例例 root=-5,-3+4i,-3-4i;%是某个多是某个多项式的根项式的根 p=poly(root)%求相应的多项式的求相应的多项式的系数向量系数向量P1=poly2sym(p)%将多项式系数将多项式系数向量表示成符号多项式向量表示成符号多项式多项式运算多项式运算:(1)求多项式的值求多项式的值:例例 p=1,11,55,125;a=1.2 b=1,2;2,3 polyval(p,a)%polynomial value 求多项式在求多项式在1.2的值的值polyvalm(p,b)%多项式在多项式在b的值的值(2)(2)求多项式的根求多项式的根:例求多项式例求多项式 2x4-5x3+6x2-x+9=02x4-5x3+6x2-x+9=0的所有的所有根根.p=2,-5,6,-1,9 p=2,-5,6,-1,9 roots(proots(p)%)%得到系数向量所相得到系数向量所相应的多项式的根应的多项式的根(3)多项式乘除运算分别用多项式乘除运算分别用conv和和deconv:(convolution,deconvolution)例例 p1=2,-5,6,-1,9;p2=3,-90,18;p=conv(p1,p2)%为为p1和和p2所所相应的多项式的乘积多项式的系相应的多项式的乘积多项式的系数向量数向量 p3=deconv(p,p1)%p3=deconv(p,p1)%为为p2p2 p4=deconv(p,p2)%p4=deconv(p,p2)%为为p1p1 poly2sym(p1)poly2sym(p1);poly2sym(p2)poly2sym(p2);poly2sym(p)poly2sym(p)poly2sym(p3)poly2sym(p3)poly2sym(p4)%poly2sym(p4)%观看这几个多项观看这几个多项式式polyfit(x,y,npolyfit(x,y,n)其中其中x,yx,y为拟合数为拟合数据,据,n n为拟合多项式的阶数。例为拟合多项式的阶数。例 用最小二乘法拟合数据用最小二乘法拟合数据 x:0.50 1.00 1.50 2.00 2.50 3.00 x:0.50 1.00 1.50 2.00 2.50 3.00 y:1.75 2.45 3.81 y:1.75 2.45 3.81 4.80 8.00 8.604.80 8.00 8.60 x=0.5,1,1.5,2,2.5,3 x=0.5,1,1.5,2,2.5,3 y=1.75,2.45,3.81,4.80,8.00,8.60y=1.75,2.45,3.81,4.80,8.00,8.60 a=polyfit(x,y,2)%用2次多项式拟合上组数据,a为拟合多项式的系数向量 x1=0.5:0.05:3x1=0.5:0.05:3 y1=a(1)*x1.2+a(2)*x1+a(3)y1=a(1)*x1.2+a(2)*x1+a(3)plot(x1,y1)%plot(x1,y1)%画出拟合曲线的图画出拟合曲线的图形形 hold on%hold on%保留上面的图形和坐保留上面的图形和坐标,可在该坐标系中继续作图标,可在该坐标系中继续作图 plot(x,yplot(x,y,*)%)%用用*号的形式号的形式画出被拟合的数据图形画出被拟合的数据图形l求矩阵的特征值(求矩阵的特征值(eigenvalue:)和特征向量和特征向量(eigenvector)例例 a=7,3,-2;3,4,-1;-2,-1,3;x,y=eig(a)%所得结果所得结果x为为a的特的特征向量矩阵,征向量矩阵,y为特征值矩阵为特征值矩阵说明:可以验证:说明:可以验证:a*x=y*x?三、符号运算三、符号运算MATLABMATLAB进行符号运算的主要功能:进行符号运算的主要功能:符号表达式和符号矩阵的基本操作、符号表达式和符号矩阵的基本操作、符号矩阵的基本运算、符号微积分符号矩阵的基本运算、符号微积分运算、符号线性方程求解、符号微运算、符号线性方程求解、符号微分方程求解、特殊数学符号函数、分方程求解、特殊数学符号函数、符号函数图形等。符号函数图形等。符号表达式的生成符号表达式的生成创建符号函数:如创建符号函数:如f=log(x)创建符号方程:如创建符号方程:如 g=a*x2+b*y2+c=0创建微分方程:如创建微分方程:如q=Dy-y=x或者:或者:f=sym(log(x)、g=sym(a*x2+b*y2+c=0)、q=sym(Dy-y=x)说明:符号函数也可以用另一方法说明:符号函数也可以用另一方法创建创建(该方法不能创建方程该方法不能创建方程):syms x f=log(x)w=sin(x)+cos(x)符号与数值之间的转换符号与数值之间的转换(1)(1)VpaVpa函数:如函数:如 digits(25)digits(25)设置有效数字设置有效数字的精度为的精度为2525位有效数字位有效数字 vpa(pi+1)vpa(pi+1)显示在上述显示在上述digitsdigits函数设置下的精度函数设置下的精度 的数的数值值 或者或者vpa(pi+1,25)vpa(pi+1,25)(2)numeric函数:如函数:如 numeric(pi+2)(3)double函数函数:如如 double(pi+2)%与上一个函数结与上一个函数结果一样。果一样。例例 求函数求函数f(x)=x-cos(x)在在x=2的值。的值。解解 symssyms x x f=f=x-cos(xx-cos(x););f1=subs(f,f1=subs(f,2 2,x)%,x)%字符替代,字符替代,在在 符号函数符号函数f f中用中用2 2代替代替x x f1=subs(f,x,2)%f1=subs(f,x,2)%给出给出f f在在x=1x=1处处的值。的值。digits(20)digits(20)vpa(f1)vpa(f1)numeric(f1),double(f1)numeric(f1),double(f1)例求方程例求方程3x2-ex=0的精确解和各种的精确解和各种精度的近似解。精度的近似解。解解 s=solve(3*x2-exp(x)=0)vpa(s)%显示显示32位有效数字位有效数字 vpa(s,6)显示显示6位有效数字位有效数字 syms x ezplot(3*x2-exp(x)注:注:W=LAMBERTW(X)是是w*exp(w)=x的解的解符号函数运算符号函数运算复合函数运算:设复合函数运算:设z=g(y),y=f(x)compose(g,f)%即为即为g(f(x),自自变量的符号取为变量的符号取为f函数的自变量符函数的自变量符号。号。compose(g,f,t)%即为即为g(f(x),自自变量的符号取变量的符号取t。反函数运算:反函数运算:finverse例例syms x,y,tg=sin(y),f=1/xcompose(g,f)compose(g,f,t)finverese(g)finverese(f)符号矩阵创立符号矩阵创立 使用使用sym函数直接创建符号矩阵:例函数直接创建符号矩阵:例 a=sym(1/sin(x),cos(x)2;2*x,1+x2)用创建子矩阵的办法创建符号矩阵:例用创建子矩阵的办法创建符号矩阵:例 a=1/sin(x),cos(x)2;2*x ,1+x2 同列元素的位数必须一样,同列元素的位数必须一样,可用空可空格来补。可用空可空格来补。例例b=a,;1 ,x2 将数值矩阵转化为符号矩阵将数值矩阵转化为符号矩阵a=2/3,sqrt(2);0.222,log(3)%a为为数值矩阵数值矩阵b=sym(a)把把a转化为符号矩阵转化为符号矩阵b。符号矩阵索引和修改符号矩阵索引和修改b(2,2)%矩阵的索引矩阵的索引,显示矩阵显示矩阵b的的第第2行第行第2列元素。列元素。符号矩阵的修改符号矩阵的修改b(2,2)=log(9)%矩阵的修改,把矩阵的修改,把b(2,2)修改为修改为log(9)。符号矩阵的运算符号矩阵的运算(1)、)、*、/运算运算(2)矩阵转置()矩阵转置():):a (3)行列式运算:行列式运算:det(a)%determinant的的简写计算符号矩阵的简写计算符号矩阵的行列式。行列式。(4)求逆)求逆inv(a):求矩阵求矩阵a的逆。的逆。(5)求矩阵的秩)求矩阵的秩rank(a):求矩阵求矩阵a的秩。的秩。符号极限符号极限limit(f,x,a):求表达式求表达式f在在xa时的极限。时的极限。limit(f):求求f在在x0时的极限时的极限.imit(f,x,a,left):求表达式求表达式f在在xa时的左时的左极限。极限。limit(f,x,a,right):求表达式求表达式f在在xa时的时的右极限。例右极限。例 syms x limit(sin(x)/x,x,1)limit(sin(x)/x)limit(1+1/x)(1/x),x,inf)f=atan(1/(1-x)y=limit(f,x,1)%没极限没极限 y1=limit(f,x,1,left)y2=limit(f,x,1,right)f=1/x,y1=limit(f,x,0,left)y2=limit(f,x,0,right)符号积分符号积分(积分:积分:integral)(1)int(f,x):计算符号表达式计算符号表达式f,自由变自由变量为量为x的不定积分的不定积分(2)int(f,x,a,b):计算符号表达式计算符号表达式f,自自由变量为由变量为x,从从a到到b的定积分的定积分说明:符号表达式可以是符号函数,说明:符号表达式可以是符号函数,也可是符号矩阵。也可是符号矩阵。例例 syms x int(sin(x),x)int(sin(x),x,0,1)int(sin(x),x,0,1 a=sym(1/sin(x),cos(x)2;2*x,1+x2)int(a,x)符号函数求导符号函数求导(微分微分:differential)(1)diff(f,x)%求表达式求表达式f,自由变量为自由变量为x的导数。的导数。(2)diff(f,x,n)%求表达式求表达式f,自由变量自由变量为为x的的n阶导数。阶导数。syms x f=sin(x)2 diff(f,x)diff(f,x,2)线性方程组的符号解法(线性方程组的符号解法(linsolve)例例a=sym(10,-1,0;-1,10,-2;0,-2,10)b=sym(9;7;6)x=linsolve(a,b)%x为线性方程为线性方程ax=b的解。的解。vpa(x)%转化为浮点近似解转化为浮点近似解,32位位有效数字。有效数字。非线性方程组的符号解法非线性方程组的符号解法(fsolvefsolve)例例 求解下面非线性方程组求解下面非线性方程组 x1-0.7sinx1-0.2cosx2=0 x2-0.7cosx10.2sinx2=0解首先编写函数文件解首先编写函数文件f.mf.m如下如下function y=fc(x)y(1)=x(1)-0.7*sin(x(1)-0.2*cos(x(2);y(2)=x(2)-0.7*cos(x(1)+0.2*sin(x(2);y=y(1);y(2);在命令窗口中输入在命令窗口中输入x0=0.502,0.51;x0为初始向量为初始向量fsolve(fc,x0)常微分方程的符号解(常微分方程的符号解(dsolvedsolve):):字符字符D代表对独立变量导数代表对独立变量导数d/dt,Dn代代表对独立变量的表对独立变量的n阶导数,阶导数,例例 求求dy/dt=-ay的解的解解解 dsolve(Dy=-a*y)%得到通解。得到通解。dsolve(Dy=-a*y,y(0)=1)%给定给定了初始条件,求特解。方程和了初始条件,求特解。方程和 初始初始条件用逗号分开,都用单引号引起来。条件用逗号分开,都用单引号引起来。符号函数的二维图形符号函数的二维图形(1 1)ezplot(fezplot(f):):绘制绘制f(xf(x)的图形,的图形,x x的范围为的范围为-2-2,22。如。如 ezplot(sin(xezplot(sin(x)。(2 2)ezplot(f,a,bezplot(f,a,b):):绘制绘制f(xf(x)的的图形,图形,x x的范围为的范围为aa,bb。如。如 ezplot(sin(x),0,9)ezplot(sin(x),0,9)。四、图形处理四、图形处理 图形可视化是数学计算图形可视化是数学计算人员所喜欢和追求的一项技人员所喜欢和追求的一项技术。把结果用图形描述出来,术。把结果用图形描述出来,便于理解、分析。便于理解、分析。二维绘图命令二维绘图命令(1)plot(y):若若y是向量,就以向量的是向量,就以向量的索引为横坐标,以向量的元素值为纵索引为横坐标,以向量的元素值为纵坐标;坐标;(2)plot(x,y):一般来说是绘制向量一般来说是绘制向量y的的图形,横坐标为图形,横坐标为x的值,纵坐标为的值,纵坐标为y的的值。值。(3)plot(x,y,.):这里这里.表示用点线表示用点线显示。显示。二维绘图命令二维绘图命令(1)plot(y):若若y是向量,就以向量是向量,就以向量的索引为横坐标,以向量的元素值的索引为横坐标,以向量的元素值为纵坐标;为纵坐标;(2)plot(x,y):一般来说是绘制向量一般来说是绘制向量y的图形,横坐标为的图形,横坐标为x的值,纵坐标为的值,纵坐标为y的值。的值。(3)plot(x,y,.):这里这里.表示用点线表示用点线显示。显示。例例x=-pi:0.1:pi y=sin(x)plot(y)hold on%保留上一个图形保留上一个图形 plot(x,y)plot(x,y+1,:r)说明:在说明:在plot(x,y,s)中图形设置选项中图形设置选项s的规定的规定.:点线;:点线;o:圆圈线;圆圈线;:实线;:实线;.:点划线;:点划线;:号线;:号线;:点线;:点线;:虚线;:虚线;x:x符号线;符号线;y:黄色;黄色;r:红色;红色;g:绿色:绿色如:如:plot(x,y,:r)%绘出点线红色绘出点线红色图形。图形。例例x=0:0.1*pi:2*pi;y=sin(x);z=cos(x);plot(x,y,-k,x,z,-.r)%分别用虚分别用虚黑线和点划红线显示两条曲线。黑线和点划红线显示两条曲线。(4)polar(,r):画出极坐标函画出极坐标函数数r=r()的图形的图形例例cita=0:0.1*pi:4*pi;r=cita+sin(cita/2)polar(cita,r)三维图形命令三维图形命令(1)plot3(x,y,z):x,y,z为同维向量为同维向量时画空间曲线,例画出时画空间曲线,例画出x=sin(t),y=cos(t),x=t,t0,10的图形。的图形。解解t=0:pi/50:10*pi;z=t,x=sin(t),y=cos(t),plot3(x,y,z)plot3(x,y,z+1,-r)(2)plot3(x,y,z):当当z=f(x,y),(x,y)为为xoy平面上的网格节点时,它平面上的网格节点时,它可以画出空间曲面可以画出空间曲面z=f(x,y)的图的图形。形。(3)mesh(x,y,z):画出三维网格画出三维网格图。图。(4)meshc(x,y,z):画出三维网格画出三维网格与等高线图与等高线图(5)meshz(x,y,z):增加边界面屏增加边界面屏蔽。蔽。(6)surf(x,y,z):与与mesh函数不函数不同的是把图形着色同的是把图形着色,surfc与与meshc类似。例类似。例x,y=meshgrid(-2:0.1:2,-2:0.1:2);z=x.2+y.2;plot3(x,y,z)hold on meshc(x,y,z+8),meshc(x,y,z+16),mesh(z)与与mesh(x,y,z)的区别类的区别类似于似于plot(x)与与plot(x,y)的区别。的区别。(3)坐标轴标注)坐标轴标注xlable(标注标注),ylable(标注标注)(4)标题标注标题标注title(标题标题)x=-pi:0.1*pi:pi,y=sin(x)plot(x,y),v=-16,6,-1,2,axis(v)grid onxlabel(x-axis),ylabel(y=sinx)title(正弦函数图像正弦函数图像)(5)图形保持)图形保持hold on/off:hold on是启动图形保持功能,在已存是启动图形保持功能,在已存在的一张图中添加曲线,在的一张图中添加曲线,hold off 是关闭图形保持功能。是关闭图形保持功能。(6)图例标注)图例标注legend(标注标注1,标注标注2,)例例x=0:0.1*pi:2*pi;y=sin(x);z=cos(x);plot(x,y,-*)hold on plot(x,z,-o)plot(x,y+z,-h)legend(y=sinx,z=cosx,y+z=sinx+cosxhold off%关闭图形保持关闭图形保持(7)子图子图subplot(m,n,p):其功能其功能是把一个图形分成是把一个图形分成mn个小图个小图形窗口,通过参数形窗口,通过参数p调用各子调用各子窗口进行操作。例窗口进行操作。例x=0:0.1*pi:2*pi;y=sin(x);z=cos(x);subplot(2,2,1),plot(x,y,-*)subplot(2,2,2),plot(x,z,-o)subplot(2,2,3),plot(x,y+z,-h)subplot(2,2,4),plot(x,y-z,-x)图形处理技术图形处理技术(1)坐标轴控制函数)坐标轴控制函数axis(v):对对二维图形二维图形v=a,b,c,d,其中其中a,b和和c,d分别为分别为x轴和轴和y轴的范围;对轴的范围;对于三维图形于三维图形v=a,b,c,d,e,f分别给出分别给出x,y和和z轴的范围。例轴的范围。例 (2)平面坐标网格函数平面坐标网格函数grid on/off:作用是平面图形带有网格和取消网作用是平面图形带有网格和取消网格。格。五、程序设计五、程序设计MATLAB作为一种高级计算语言,作为一种高级计算语言,不仅可以做如上所讲的那些工作,不仅可以做如上所讲的那些工作,还可以像还可以像basic,fortran,c等其它等其它高级计算机语言一样进行程序设高级计算机语言一样进行程序设计,即编制以计,即编制以m为扩展名的文本为扩展名的文本文件(简称文件(简称M文件)。文件)。M文件的形式文件的形式(1)命令式()命令式(script):命令式文):命令式文件就是命令行的简单叠加,件就是命令行的简单叠加,MATLAB就会自动按顺序执行文就会自动按顺序执行文件中的命令,这样就可以避免在件中的命令,这样就可以避免在命令窗口运行许多命令的麻烦和命令窗口运行许多命令的麻烦和重复行工作,也便于修改。重复行工作,也便于修改。例例%sinfig.m x=-pi:0.1*pi:pi;y=sin(x);plot(x,y);hold on;plot(y,x)(2)函数式(函数式(function):他主要):他主要解决参数传递和函数调用问题,解决参数传递和函数调用问题,它的第一句以它的第一句以function语句为语句为引导。引导。例例 f.m 文件名与函数名必须文件名与函数名必须一致一致 function f(x)f=2*x2+4*x+6 在命令窗口中输入:在命令窗口中输入:f(0),f(10)可可以看出结果。以看出结果。控制语句控制语句(1)循环语句)循环语句 (a)for循环:例循环:例 s=0;for k=1:1:10%初始值、步长和最大初始值、步长和最大限值限值 s=s+k;end 循环结束标志循环结束标志(b)while循环:例循环:例 s=0;k=0;while k=9 k=k+1;s=s+k;end s(c)ifelse选择语句:例选择语句:例 编写分段函数编写分段函数f(x)=x,(-1=x0);f(x)=x2,(0=x=-1&x=-1&x=0&x=1,y=x2;else,f=0 end在命令窗口中输入在命令窗口中输入f(1),(3)可以得到结可以得到结果。果。例例 已知已知n=n=自己的真实学号,在自己的真实学号,在xoyxoy平面平面有点有点 A Ai i=(i,0)=(i,0)B Bi i=(=(i,ni,n)(i=0,1,2,(i=0,1,2,n),n)现要画连接现要画连接A Ai iB Bj j的线段的线段(i,ji,j=0,1,=0,1,n)n),试给出其,试给出其MAT LABMAT LAB程序。程序。解解 现就学号为现就学号为6 6,给出其程序如下:,给出其程序如下:n=6;x=0:n;y=0:n;for i=1:7for j=1:7 if i=j plot(x(i)*ones(size(y),y);xlabel(x);ylabel(y);title(AiBj的连线的连线)v=0,n,0,n;axis(v)hold on;else a=min(x(i),x(j);b=max(x(i),x(j);X1=a:0.1*(b-a):b;Y1=-n/(x(i)-x(j)*(X1-x(i);%连接连接AiBj的直线的直线 plot(X1,Y1);end endend作业:在上题的基础上,再加上点作业:在上题的基础上,再加上点 Ci=(0,i),Di=(n,i)(i=0,1,2,(i=0,1,2,n),n)现要画连接现要画连接AiBjAiBj和和CiBjCiBj的线段的线段(i,ji,j=0,1,=0,1,n),n),试给出其,试给出其MAT MAT LABLAB程序。把运行结果得到的图像,程序。把运行结果得到的图像,存放到存放到WORDWORD文件,文件名字取为:文件,文件名字取为:真实姓名真实姓名_ _真实学号,然后发送到真实学号,然后发送到信箱信箱:六、主要命令汇总六、主要命令汇总1、常用信息、常用信息help:在线帮助(显示在命令窗)。在线帮助(显示在命令窗)。helpwin:在线帮助(独立窗口显示)。在线帮助(独立窗口显示)。ver:MATLAB及工具箱的版本信息。及工具箱的版本信息。2、管理工作区命令、管理工作区命令who:显示当前变量。显示当前变量。whos:显示当前变量具体信息。显示当前变量具体信息。clear:从内存中清楚变量和函数。从内存中清楚变量和函数。quit:退出退出MATLAB。3、管理命令和函数、管理命令和函数what:显示当前目录下的显示当前目录下的MATLAB 文件。文件。edit:编辑编辑M文件。文件。edit(建立编辑新建立编辑新 文文 件件);edit文件名文件名(编辑已有编辑已有 的文件的文件)。which:找出函数和文件的位置。找出函数和文件的位置。type:显示显示M文件内容。文件内容。Type+文件文件 名。名。Inmem:显示内存中的函数。显示内存中的函数。4、操作系统命令、操作系统命令dir:显示目录。显示目录。pwd:显示当前工作目录。显示当前工作目录。delete:删除文件。删除文件。Delete+文件名。文件名。web:打开页面浏览器加载文件。打开页面浏览器加载文件。5、数据类型、数据类型double:双精度类型。双精度类型。char:字符数组或字符串。字符数组或字符串。uint8:无符号无符号8位整数(位整数(unsigned integer)6、数据基本操作、数据基本操作max:最大元素。向量为数,矩阵为最大元素。向量为数,矩阵为向量向量min:最小元素。类似最小元素。类似max.mean:求平均值。求平均值。mean(a),a为向量为向量 时得到向量平均值,结果为一时得到向量平均值,结果为一 个数;个数;a为矩阵时,进行每列为矩阵时,进行每列 平均,得到一个向量。平均,得到一个向量。sum:元素和。元素和。sum(a),a为向量时得为向量时得 到该向量各元素之和,结果为一到该向量各元素之和,结果为一 个数;个数;a为矩阵时,进行每列为矩阵时,进行每列 求和,得到一个向量。求和,得到一个向量。prod:元素积。元素积。prod(a)当当a为向量和为向量和 矩阵时的情况,类似于矩阵时的情况,类似于max(a)。cumsum:元素累和。元素累和。cumsum(a),a 可为向量,也可为矩阵。可为向量,也可为矩阵。cumprod:元素累积。元素累积。a可为向量,可为向量,也可为矩阵。也可为矩阵。7、基本矩阵函数、基本矩阵函数zeros:零矩阵函数。零矩阵函数。ones:全全1矩阵。矩阵。eye:单位矩阵。单位矩阵。rand:随机数、向量、矩阵随机数、向量、矩阵.linspace:线性等分向量。线性等分向量。8、基本数组操作、基本数组操作size:矩阵大小。矩阵大小。length:数组长度。数组长度。isempty:判断是不是空矩阵。判断是不是空矩阵。isequal:判断数组是否相等。判断数组是否相等。isequal(a,b)。isnumeric:判断是否为数值矩阵。判断是否为数值矩阵。reshape:矩阵重置。矩阵重置。tril:抽取下三角部分。抽取下三角部分。triu:抽取上三角部分。抽取上三角部分。fliplr:左右方向翻转矩阵。左右方向翻转矩阵。flipud:上下方向翻转矩阵。上下方向翻
展开阅读全文