《MATLAB课件第3_4章.ppt》由会员分享,可在线阅读,更多相关《MATLAB课件第3_4章.ppt(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章 MATLAB的数值计算的数值计算矩阵的构建矩阵的构建矩阵元素矩阵元素矩阵运算矩阵运算矩阵的关系运算和逻辑运算矩阵的关系运算和逻辑运算多项式运算多项式运算13.1 矩阵的构建矩阵的构建3.1.1 直接输入创建矩阵直接输入创建矩阵 创建矩阵最简单的方法就是直接输入矩阵元素,输创建矩阵最简单的方法就是直接输入矩阵元素,输入格式有以下的要求:入格式有以下的要求:整个整个矩阵以矩阵以“”作为首尾;作为首尾;行行与行之间用分号与行之间用分号“;”或回车键分隔;或回车键分隔;每每行中的元素用行中的元素用“,”或空格分隔;或空格分隔;矩阵矩阵中的元素可以是数字或者表达式;中的元素可以是数字或者表达
2、式;如果如果矩阵中没有元素,这样的矩阵称为空阵(矩阵中没有元素,这样的矩阵称为空阵(Empty Matrix)。)。2 a=1 2 3;4 5 6;7 8 9a=1 2 3 4 5 6 7 8 9 b=1 sin(pi/6)sqrt(9)3+5 6 0b=1.0000 0.5000 3.0000 8.0000 6.0000 033.1.2 利用内部函数产生矩阵利用内部函数产生矩阵 利用内部函数可以很利用内部函数可以很容易生成一些容易生成一些常见的特殊矩阵,常见的特殊矩阵,常用函数如下:常用函数如下:eye(m,n)产生单位矩阵产生单位矩阵zeros(m,n)产生元素全为产生元素全为0的矩阵的矩
3、阵ones(m,n)产生元素全为产生元素全为1的矩阵的矩阵rand(m,n)产生均匀分布的随机元素矩阵,范围产生均匀分布的随机元素矩阵,范围01randn(m,n)产生正态分布的随机元素矩阵产生正态分布的随机元素矩阵diag(x)产生矩阵产生矩阵x的对角阵的对角阵magic(m)产生魔术矩阵产生魔术矩阵说明说明:当:当eye、zeros、ones、rand、randn函数函数只有一个参数只有一个参数n时,则产生时,则产生nn的方阵。的方阵。4 eye(3)ans=1 0 0 0 1 0 0 0 1 eye(3,4)ans=1 0 0 0 0 1 0 0 0 0 1 0 zeros(3)ans=
4、0 0 0 0 0 0 0 0 0 ones(3,4)ans=1 1 1 1 1 1 1 1 1 1 1 1 a=magic(3)a=8 1 6 3 5 7 4 9 2 diag(a)ans=8 5 253.1.3 数组的构建数组的构建 在在MATLAB中数组可以看作行向量,即只有一行中数组可以看作行向量,即只有一行的矩阵,的矩阵,MATLAB创建数组可用以下特殊命令:创建数组可用以下特殊命令:1.冒号生成法冒号生成法(初值:步长:终值初值:步长:终值)0:0.4:2ans=0 0.4000 0.8000 1.2000 1.6000 2.0000初值初值=0,终值,终值=2,步长,步长=0.4
5、,步长若省略,默认间隔,步长若省略,默认间隔1 a=1:4;b=1:2:7;c=a bc=1 2 3 4 1 3 5 7 d=a 9 10d=1 2 3 4 9 1062.linspace函数函数 linspace(a,b,n)差值差值=(b-a)/(n-1)a=linspace(0,1,4)a=0 0.3333 0.6667 1.0000初值初值=0,终值,终值=1,元素个数,元素个数=43.logspace函数函数 logspace(a,b,n)公比公比=10(b-a)/(n-1)logspace(0,2,5)ans=1.0000 3.1623 10.0000 31.6228 100.00
6、00初值初值=100,终值,终值=102,元素个数,元素个数=5,公比,公比=100.53.1.4 从外部的数据文件中导入矩阵从外部的数据文件中导入矩阵73.2 矩阵的元素矩阵的元素3.2.1 矩阵元素的下标表示矩阵元素的下标表示 1.全下标表示全下标表示 一一个个mn矩阵矩阵A的第的第i行,第行,第j列元素表示为列元素表示为A(i,j),即由行下标和列下标表示,行列数从即由行下标和列下标表示,行列数从1开开始。始。注意注意:当给元素赋值时,如果超出矩阵范围,则自动扩:当给元素赋值时,如果超出矩阵范围,则自动扩充矩阵;当取值时,若超出矩阵范围,则提示错误。充矩阵;当取值时,若超出矩阵范围,则提
7、示错误。a=1 2;3 4;a(1,2)=9;a(2,3)=8;aa=1 9 0 3 4 8 a(2,4)?Index exceeds matrix dimensions.82.单下标表示单下标表示 将矩阵的所有列按从左到右的顺序接成将矩阵的所有列按从左到右的顺序接成“一维长列一维长列”,然后对元素进行编号。一个,然后对元素进行编号。一个mn矩阵矩阵A的元素的元素A(i,j)对应的下标为对应的下标为(j-1)*m+i。a=1 2 3;4 5 6;a(1,2)ans=2 a(3)ans=2 a(5)=10a=1 2 10 4 5 693.2.2 子矩阵子矩阵 1.全下标表示全下标表示(1)a(i
8、 j,k l):行数为:行数为i、j,列数为,列数为k、l的元素的元素构构成子矩阵成子矩阵(2)a(i:j,k:l):取行数为:取行数为ij,列数为,列数为kl的元素构成的元素构成的子矩阵的子矩阵(3)a(i:j,:):取行数为:取行数为ij,所有列的元素构成的子矩,所有列的元素构成的子矩阵阵(4)a(end,k:j):取行数最大值,列数为:取行数最大值,列数为kj的元素构的元素构成的子矩阵成的子矩阵2.单下标表示单下标表示a(i j;k l):取单下标为:取单下标为i、j、k、l的元素构成子矩阵。的元素构成子矩阵。10 a=magic(5)a=17 24 1 8 15 23 5 7 14 1
9、6 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 a(1 2,3 4)ans=1 8 7 14 a(1:2,3:5)ans=1 8 15 7 14 16 a(1:2,:)ans=17 24 1 8 15 23 5 7 14 16 a(end,1:2)ans=11 18 a(1 3;4 5)ans=17 4 10 11113.2.3 矩阵元素的删除矩阵元素的删除 删除矩阵元素可以简单的将该元素赋值为空矩阵删除矩阵元素可以简单的将该元素赋值为空矩阵(用(用 表示)。表示)。a=rand(3,4)a=0.4565 0.4447 0.9218 0.4057 0.018
10、5 0.6154 0.7382 0.9355 0.8214 0.7919 0.1763 0.9169 a(2)=a=Columns 1 through 6 0.4565 0.8214 0.4447 0.6154 0.7919 0.9218 Columns 7 through 11 0.7382 0.1763 0.4057 0.9355 0.9169123.2.4 矩阵元素的数量矩阵元素的数量1.numel函数函数 n=numel(a):计算矩阵:计算矩阵a中元素的总数中元素的总数2.size函数函数d=size(a):d=m n,m为为a的行数,的行数,n为为a的列数的列数m n=size(a
11、):m为为a的行数,的行数,n为为a的列数的列数m=size(a,dim):m为矩阵为矩阵a的第的第dim维元素的数量(维元素的数量(1表示表示列,列,2表示行)表示行)a=rand(2,3)a=0.2844 0.0648 0.5828 0.4692 0.9883 0.4235 d=size(a)d=2 3 m=size(a,2)m=3 numel(a)ans=6133.3 矩阵与矩阵与数组运算数组运算MATLAB算术运算算术运算矩阵算术运算矩阵算术运算数组算术运算数组算术运算矩阵算术运算矩阵算术运算:按照线性代数运算法则定义:按照线性代数运算法则定义数组算术运算数组算术运算:按照元素逐个执行
12、:按照元素逐个执行143.3.1 矩阵的运算矩阵的运算+加法加法 -减法减法 *乘法乘法 幂幂 左除左除 /右除右除 转置转置1.矩阵的加减法矩阵的加减法 矩阵的加减法是对应元素的加减法,只有当两个矩阵的加减法是对应元素的加减法,只有当两个矩阵维数相同或者其中一个为标量时,矩阵维数相同或者其中一个为标量时,才可以进行加才可以进行加减法运算。减法运算。a=1 2;3 4;b=5 6;7 8;a+bans=6 8 10 12 3+aans=4 5 6 7 b-3ans=2 3 4 5152.矩阵的乘法矩阵的乘法 矩阵的乘法使用矩阵的乘法使用“*”运算符,两个矩阵要相乘,运算符,两个矩阵要相乘,只有
13、当前一矩阵的列数与后一矩阵行数相等或者其中只有当前一矩阵的列数与后一矩阵行数相等或者其中一个为标量时才能进行。一个为标量时才能进行。a=1 2;3 4;b=5 6 7;8 9 10;a*bans=21 24 27 47 54 61 b*a?Error using=*Inner matrix dimensions must agree.3*aans=3 6 9 12163.矩阵的除法矩阵的除法 矩阵的除法有左除和右除两种,分别用矩阵的除法有左除和右除两种,分别用“”和和“/”表示。通常矩阵除法可以用来表示。通常矩阵除法可以用来求未知矩阵求未知矩阵。若若 A*X=B,则,则 X=AB 若若 X*A
14、=B,则,则 X=B/A a=1 2;3 4;b=5 6 7;8 9 10;c=a*bc=21 24 27 47 54 61 acans=5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 c/bans=1.0000 2.0000 3.0000 4.000017例例:求解以下方程:求解以下方程 A=1 3 2;2 2 3;3 1 1A=1 3 2 2 2 3 3 1 1 B=1;10;7B=1 10 7 ABans=2 -3 4184.矩阵的乘方矩阵的乘方 矩阵的乘方使用矩阵的乘方使用“”运算符,如运算符,如AP,当,当P为整为整数时,该指令运算结果可做如下解
15、释:数时,该指令运算结果可做如下解释:当当P0,表示方阵,表示方阵A直接自乘直接自乘P次;次;当当P a=1 2;3 4a=1 2 3 4 a2ans=7 10 15 22 a0ans=1 0 0 1 a(-2)ans=5.5000 -2.5000 -3.7500 1.7500195.矩阵的转置矩阵的转置 矩阵的转置使用矩阵的转置使用“”运算符,矩阵的转置就是运算符,矩阵的转置就是将第将第i行第行第j列的元素和第列的元素和第j行第行第i列的元素进行互换。列的元素进行互换。对于有复数元素的矩阵对于有复数元素的矩阵A,A为为共轭转置,共轭转置,A.为为非共轭转置。非共轭转置。a=1 2;3 4a=
16、1 2 3 4 aans=1 3 2 4 a=1+i 2+i;3+i 4+i;aans=1.0000-1.0000i 3.0000-1.0000i 2.0000-1.0000i 4.0000-1.0000i a.ans=1.0000+1.0000i 3.0000+1.0000i 2.0000+1.0000i 4.0000+1.0000i206.矩阵的逆(矩阵的逆(inv)在在MATLAB中,使用函数中,使用函数inv计算矩阵的逆矩阵。计算矩阵的逆矩阵。A是可逆矩阵的充分必要条件是是可逆矩阵的充分必要条件是|A|0,即可逆矩阵是,即可逆矩阵是非奇异方阵。非奇异方阵。a=magic(3)a=8 1
17、 6 3 5 7 4 9 2 inv(a)ans=0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 a*inv(a)ans=1.0000 0 -0.0000 -0.0000 1.0000 0 0.0000 0 1.0000 a(-2)ans=0.0293 -0.0124 -0.0124 -0.0124 0.0293 -0.0124 -0.0124 -0.0124 0.0293 inv(a2)ans=0.0293 -0.0124 -0.0124 -0.0124 0.0293 -0.0124 -0.0124 -0.
18、0124 0.0293217.方阵方阵的行列式(的行列式(det)方阵和行列式是两个不同的概念,方阵和行列式是两个不同的概念,n阶方阵是阶方阵是n2个个数按一定方式排成的数表,数按一定方式排成的数表,n阶行列式则是这些数按一阶行列式则是这些数按一定的运算法则确定的一个数。在定的运算法则确定的一个数。在MATLAB中,求方阵中,求方阵的行列式的函数是的行列式的函数是det。a=magic(3)a=8 1 6 3 5 7 4 9 2 det(a)ans=-360228.矩阵矩阵的特征值(的特征值(eig)在在MATLAB中,以函数中,以函数eig计算矩阵的特征值,并计算矩阵的特征值,并以向量的形式
19、以向量的形式存放。存放。如果如果AX=X存在非零解向量,则称存在非零解向量,则称为为A的一个的一个特特征值征值,相应的非零解向量,相应的非零解向量X称为与称为与相对应的相对应的特征向量特征向量。G=1 2 0;2 5-1;4 10-1;eig(G)ans=3.7321 0.2679 1.0000 p,q=eig(G)p=-0.2440 -0.9107 0.4472 -0.3333 0.3333 0.0000 -0.9107 -0.2440 0.8944q=3.7321 0 0 0 0.2679 0 0 0 1.0000239.矩阵矩阵的特征多项式(的特征多项式(poly)在在MATLAB中,以
20、中,以函数函数poly计算矩阵的特征多项计算矩阵的特征多项式。式。设设A为为n阶方阵,如果阶方阵,如果和和n维非零列向量维非零列向量X使关系使关系式式AX=X成立,那么(成立,那么(A-E)X=0称为矩阵称为矩阵A的特征的特征方程,方程,|A-E|称为方阵称为方阵A的特征多项式。的特征多项式。a=-2 1 1;0 2 0;-4 1 3;poly(a)ans=1 -3 0 4 roots(ans)ans=2.0000+0.0000i 2.0000-0.0000i -1.0000 eig(a)ans=-1 2 22410.矩阵的秩(矩阵的秩(rank)在在MATLAB中,以函数中,以函数rank计
21、算计算矩阵的秩。矩阵的秩。设在矩阵设在矩阵A中存在一个不等于中存在一个不等于0的的r阶子式阶子式D,且所,且所有(有(r+1)阶子式全为)阶子式全为0,那么称,那么称D为方阵为方阵A的最高阶非的最高阶非零子式,零子式,r为矩阵为矩阵A的秩。的秩。a=magic(4)a=16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 rank(a)ans=3 det(a)ans=0253.3.2 数组的运算数组的运算.+加法加法.-减法减法 .*乘法乘法 .幂幂 .左除左除 ./右除右除 .转置转置 数组的运算操作都是对元素逐个进行的。数组运数组的运算操作都是对元素逐个进行的。数组
22、运算符与矩阵运算符的区别便是多一个小黑点。算符与矩阵运算符的区别便是多一个小黑点。a=1 2 3;b=4 5 6;a.*bans=4 10 18 a.2ans=1 4 9 a.bans=4.0000 2.5000 2.0000 a=1+j 2+j 3+ja=1.0000+1.0000i 2.0000+1.0000i 3.0000+1.0000i a.ans=1.0000+1.0000i 2.0000+1.0000i 3.0000+1.0000i26 a=ones(3);b=magic(3)b=8 1 6 3 5 7 4 9 2 a*bans=15 15 15 15 15 15 15 15 15
23、 a.*bans=8 1 6 3 5 7 4 9 2 b2ans=91 67 67 67 91 67 67 67 91 b.2ans=64 1 36 9 25 49 16 81 4273.4 矩阵关系运算与逻辑运算矩阵关系运算与逻辑运算说明说明:(1)表达式输入:非)表达式输入:非0“逻辑真逻辑真”,0“逻辑假逻辑假”(2)表达式输出:)表达式输出:1“逻辑真逻辑真”,0“逻辑假逻辑假”3.4.1 关系运算关系运算两个维数相同的矩阵进行比较两个维数相同的矩阵进行比较:相对应:相对应元素元素进行比较,结果为一个同维数矩阵;进行比较,结果为一个同维数矩阵;矩阵和标量进行比较矩阵和标量进行比较:标量
24、和矩阵中的每一:标量和矩阵中的每一个个元素进行比较,结果为一个同维数矩阵。元素进行比较,结果为一个同维数矩阵。28关关 系系 操操 作作 符符=大于等于大于等于大于大于=等于等于 a=1 2;3 4;b=1 3;4 4;a abans=0 0 0 0 a=bans=1 0 0 1 a=2ans=0 1 0 0 a=bans=1 1 1 1 、=仅比较实部,而仅比较实部,而=、=同时比同时比较实部和虚部。较实部和虚部。293.4.2 逻辑运算逻辑运算 如果如果A和和B是维数相同的矩阵,或者其中一个是标是维数相同的矩阵,或者其中一个是标量,则可以对矩阵进行逻辑运算。量,则可以对矩阵进行逻辑运算。与
25、与A&B或或and(A,B)或或A|B或或or(A,B)非非A或或not(A)异或异或xor(a,b)a=0 1 0 1;b=0 1 1 0;and(a,b)ans=0 1 0 0 a&bans=0 1 0 0 a|bans=0 1 1 1 xor(a,b)ans=0 0 1 1 a&1ans=0 1 0 1303.5 各种运算符的优先级各种运算符的优先级 MATLAB对各种运算的优先级别做了规定。计算时,对各种运算的优先级别做了规定。计算时,遵守的规定是较高优先级先于较低优先级,相同优先级遵守的规定是较高优先级先于较低优先级,相同优先级遵从从左到右原则。遵从从左到右原则。优先级优先级运算符运
26、算符最高最高().、.、.*、*、./、/、.、+、-:、=、=、=&最低最低|31 x=5;y=3;z=2;X=ones(3);Y=magic(3)Y=8 1 6 3 5 7 4 9 2 Z=zeros(3);a=x2*(X+Y)+za=227 52 177 102 152 202 127 252 77 b=Y&Z+xb=1 1 1 1 1 1 1 1 1 c=Y=Z+X=Y*xc=0 0 0 0 0 0 0 0 0323.6 基本统计处理基本统计处理3.6.1 查最大值(查最大值(max)1.C=max(A)返回矩阵返回矩阵A各列的最大值;若各列的最大值;若A为向量,返回该向量为向量,返回
27、该向量的最大值。的最大值。2.C,I=max(A)将矩阵将矩阵A各列中的最大元素值及其该元素的位置赋各列中的最大元素值及其该元素的位置赋予行向量予行向量C与与I,当,当A是向量时,是向量时,C、I是标量。是标量。3.C,I=max(A,dim)按矩阵按矩阵A的第的第dim维的方向查取最大的元素及其该元维的方向查取最大的元素及其该元素的位置赋予向量素的位置赋予向量C与与I。若。若dim=1,按列操作;若,按列操作;若dim=2,按行操作。,按行操作。33 x=2 4 7 4 8 3;m=max(x)m=8 m,n=max(x)m=8n=5 x=3 5 1;9 4 6;max(x)ans=9 5
28、6 m,n=max(x)m=9 5 6n=2 1 2 m,n=max(x,1)m=9 5 6n=2 1 2 m,n=max(x,2)m=5 9n=2 1343.6.2 查取最小值(查取最小值(min)min函数用来求取数据序列中的最小值,使用方法函数用来求取数据序列中的最小值,使用方法和和max函数相同。函数相同。3.6.3 求中值(求中值(median)1.Y=median(X):返回矩阵:返回矩阵X各列元素的中值赋予各列元素的中值赋予行向量行向量Y;若;若X为向量,为向量,Y为标量。为标量。2.Y=median(X,dim):将数组:将数组X的第的第dim维方向的元维方向的元素求其中值赋予
29、向量素求其中值赋予向量Y;若;若dim=1,按列操作(默认),按列操作(默认),若若dim=2,按行操作。,按行操作。x=3 5 1;9 4 6;median(x)ans=6.0000 4.5000 3.5000 median(x,2)ans=3 6353.6.4 求和(求和(sum)1.Y=sum(X):返回矩阵:返回矩阵X各列元素的和赋予行向量各列元素的和赋予行向量Y;若;若X为向量,为向量,Y为标量。为标量。2.Y=sum(X,dim):将数组:将数组X的第的第dim维方向的元素维方向的元素的和赋予向量的和赋予向量Y;若;若dim=1,按列操作,若,按列操作,若dim=2,按,按行操作。
30、行操作。x=3 5 1;9 4 6;sum(x)ans=12 9 7 sum(ans)ans=28 sum(x,2)ans=9 19363.6.5 求平均值(求平均值(mean)1.Y=mean(X):返回矩阵:返回矩阵X各列元素的平均值赋予行各列元素的平均值赋予行向量向量Y;若;若X为向量,为向量,Y为标量。为标量。2.Y=mean(X,dim):将数组:将数组X的第的第dim维方向的元素维方向的元素的平均值赋予向量的平均值赋予向量Y;若;若dim=1,按列操作,若,按列操作,若dim=2,按行操作。,按行操作。a=1 2 3;4 5 6a=1 2 3 4 5 6 mean(a)ans=2.
31、5000 3.5000 4.5000 mean(a,2)ans=2 5373.6.6 求积(求积(prod)1.Y=prod(X):返回矩阵:返回矩阵X各列元素的积赋予行向量各列元素的积赋予行向量Y;若;若X为向量,为向量,Y为标量。为标量。2.Y=prod(X,dim):将数组:将数组X的第的第dim维方向的元素维方向的元素的积赋予向量的积赋予向量Y;若;若dim=1,按列操作,若,按列操作,若dim=2,按,按行操作。行操作。a=1 2 3;4 5 6a=1 2 3 4 5 6 prod(a)ans=4 10 18 prod(a,2)ans=6 120383.6.7 排序(排序(sort)
32、1.Y=sort(X):将矩阵:将矩阵X的各列元素升序排列。的各列元素升序排列。2.Y=sort(X,dim):将矩阵:将矩阵X的第的第dim维元素升序排列;维元素升序排列;若若dim=1,按列操作,若,按列操作,若dim=2,按行操作。,按行操作。3.Y=sort(X,mode):按照:按照mode模式对矩阵模式对矩阵X进行排列,进行排列,若若mode为为ascend表示升序排列,若表示升序排列,若mode为为descend表示降序排列。表示降序排列。x=3 7 5;6 8 3;0 4 2;sort(x)ans=0 4 2 3 7 3 6 8 5 sort(x,2)ans=3 5 7 3 6
33、 8 0 2 4 sort(x,2,descend)ans=7 5 3 8 6 3 4 2 0393.7 多项式运算多项式运算 多项式是形如多项式是形如p(x)=a0 xn+a1xn-1+an-1x+an的式子,的式子,在在MATLAB中,多项式用行向量表示中,多项式用行向量表示P=a0 a1an-1 an。3.7.1 多项式的创建多项式的创建1.直接输入系数直接输入系数 直接输入向量,直接输入向量,MATLAB将按降幂自动将向量的元将按降幂自动将向量的元素分配给多项式各项的系数,该向量可以是行向量或素分配给多项式各项的系数,该向量可以是行向量或列列向量。向量。P=3 5 0 1 0 12;y
34、=poly2sym(P)y=3*x5+5*x4+x2+12402.由多项式的根逆推多项式由多项式的根逆推多项式 若已知某多项式的根,可用若已知某多项式的根,可用poly函数反推出与其函数反推出与其相相对应的多项式。对应的多项式。root=-4-2+2i-2-2i 5root=-4.0000 -2.0000+2.0000i -2.0000-2.0000i 5.0000 p=poly(root)p=1 3 -16 -88 -160 poly2sym(p)ans=x4+3*x3-16*x2-88*x-160413.7.2 多项式的运算多项式的运算1.多项式的求值多项式的求值(1)代数多项式求值:)代
35、数多项式求值:polyval函数函数 polyval(P,X)计算向量)计算向量P为系数的多项式在点为系数的多项式在点X的的值,如果值,如果X是矩阵或者向量,该命令对是矩阵或者向量,该命令对X的每个元素都的每个元素都进行计算。进行计算。(2)矩阵多项式求值:)矩阵多项式求值:polyvalm函数函数 Y=polyvalm(P,X)计算向量)计算向量P为系数的多项式为系数的多项式在在矩阵矩阵X的值,向量的值,向量X必须为方阵。必须为方阵。Y=P(1)Xn+P(2)Xn-1+P(N)X+P(N+1)I42 p=1 2 3;poly2sym(p)ans=x2+2*x+3 a=1 2;3 4;poly
36、val(p,2)ans=11 polyval(p,a)ans=6 11 18 27 polyvalm(p,a)ans=12 14 21 33 b=1 2 3;4 5 6;polyvalm(p,b)?Error using=polyvalmMatrix must be square.432.多项式的根多项式的根 求多项式的根,求多项式的根,即求使多项式即求使多项式为零的值。设多项为零的值。设多项式由行向量式由行向量p表示,其系数按降序排列,使用表示,其系数按降序排列,使用roots函函数计算多项式的根,格式为数计算多项式的根,格式为roots(p)。)。例例:计算多项式:计算多项式x4+3x2+
37、12x-7的根。的根。p=1 0 3 12-7p=1 0 3 12 -7 roots(p)ans=0.7876+2.4351i 0.7876-2.4351i -2.0872 0.5121 polyval(p,ans)ans=1.0e-013*-0.0178+0.8793i -0.0178-0.8793i 0.1954 0 443.多项式的四则运算多项式的四则运算(1)加法和减法)加法和减法 如果两个多项式的向量阶数相同,可直接进行加如果两个多项式的向量阶数相同,可直接进行加减法计算;如果向量阶数不同减法计算;如果向量阶数不同,不能直接进行运算,不能直接进行运算,需要在需要在低阶多项式的前面补低
38、阶多项式的前面补0,使其具有相同的阶数。,使其具有相同的阶数。a=8 2 2 8;b=6 1 6 1;poly2sym(a)ans=8*x3+2*x2+2*x+8 poly2sym(b)ans=6*x3+x2+6*x+1 c=a+bc=14 3 8 9 poly2sym(c)ans=14*x3+3*x2+8*x+9 d=a-bd=2 1 -4 7 poly2sym(d)ans=2*x3+x2-4*x+7 e=2 4 5;d+e?Error using=plusMatrix dimensions must agree.d+0 eans=2 3 0 12 poly2sym(ans)ans=2*x3
39、+3*x2+1245(2)乘法)乘法 使用使用conv函数对多项式进行乘法计算,其格式为函数对多项式进行乘法计算,其格式为conv(a,b)例例:计算:计算(x3+2x2+3x+4)(5x3+6x2+7x+8)a=1 2 3 4;b=5 6 7 8;poly2sym(a)ans=x3+2*x2+3*x+4 poly2sym(b)ans=5*x3+6*x2+7*x+8 conv(a,b)ans=5 16 34 60 61 52 32 poly2sym(ans)ans=5*x6+16*x5+34*x4+60*x3+61*x2+52*x+3246(3)除法)除法 使用使用deconv函数函数对多项式
40、进行对多项式进行除法计算。除法计算。q,r=deconv(v,u):用多项式用多项式v除以多项式除以多项式u,商赋,商赋予予q,余数赋予,余数赋予r。deconv是是conv的逆运算,的逆运算,v=conv(u,q)+r。a=1 2 3 4;b=5 6 7 8;c=conv(a,b);q,r=deconv(c,a)q=5 6 7 8r=0 0 0 0 0 0 0 c=c+0 0 0 4 3 2 1;q,r=deconv(c,a)q=5 6 7 12r=0 0 0 0 -5 -10 -1547(4)求导)求导polyder(P):对:对多项式多项式P求导求导,并返回求导结果,并返回求导结果pol
41、yder(P,Q):相当于相当于polyder(P*Q)p,q=polyder(P,Q):求求P/Q的导数,导数的分子存的导数,导数的分子存入入p,分母存入,分母存入q。例例:计算多项式(:计算多项式(3x2-2x+1)(4x2+5x+6)的导数的导数 a=3-2 1;b=4 5 6;polyder(a,b)ans=48 21 24 -7所以所求结果为:所以所求结果为:48x3+21x2+24x-748例例:计算有理分式:计算有理分式1/(x2+5)的导数的导数 a=1;b=1 0 5;p,q=polyder(a,b)p=-2 0q=1 0 10 0 25所以结果为:所以结果为:-2x/(x4
42、+10 x2+25)49(5)多项式积分)多项式积分 polyint(p,k):表示对多项式:表示对多项式p求积分求积分,常数项为,常数项为k(默认值为(默认值为0)。)。例例:计算:计算 a=3-2 1;polyint(a)ans=1 -1 1 0 polyint(a,3)ans=1 -1 1 3所以,计算结果为所以,计算结果为x3-x2+x+3。50第第4章章 MATLAB的符号计算的符号计算符号计算基础符号计算基础符号微积分符号微积分符号积分变换符号积分变换符号表达式的操作符号表达式的操作符号方程的求解符号方程的求解514.1 符号计算基础符号计算基础4.1.1 定义符号常量定义符号常量
43、 符号常量是不含变量的符号表达式,通常用符号常量是不含变量的符号表达式,通常用sym函函数创建符号常量。数创建符号常量。f=sym(常量常量)sym命令也可以把数值转换为某种格式的符号常量。命令也可以把数值转换为某种格式的符号常量。sym(常量,(常量,参数参数)参数:参数:d:返回最接近的十进制浮点精确表示;:返回最接近的十进制浮点精确表示;e:返回最接近的带误差估计的有理表示;:返回最接近的带误差估计的有理表示;f:返回十六进制浮点表示;:返回十六进制浮点表示;r:返回该符号值最接近的有理表示,缺省设置,:返回该符号值最接近的有理表示,缺省设置,可表示为可表示为p/q、p*q、10q、pi
44、/q、2q、sqrt(p)。52 sqrt(2)ans=1.4142 a=sqrt(sym(2)a=2(1/2)double(a)ans=1.4142 2/5+1/3ans=0.7333 sym(2)/sym(5)+sym(1)/sym(3)ans=11/15 sym(asin(1)ans=pi/253 3*sin(3)+pi/2ans=1.9942 sym(3*sin(3)+pi/2)ans=3*sin(3)+pi/2 sym(3*sin(3)+pi/2)ans=8980881799167258*2(-52)sym(3*sin(3)+pi/2,d)ans=1.9941563509744981
45、708138311660150544.1.2 定义符号变量定义符号变量1.sym函数函数sym(arg,参数参数)说明说明:参数可以取以下选项:参数可以取以下选项positive:限定:限定arg为为“正、实正、实”符号变量符号变量real:限定:限定arg为为“实实”符号变量符号变量unreal:arg为为“非实非实”符号变量符号变量例例:已知一复数表达式:已知一复数表达式z=x+i*y,试求其实部。,试求其实部。a=sym(x,real);b=sym(y,real);z=a+i*b;real(z)ans=x a=sym(x,unreal);real(z)ans=1/2*x+1/2*conj
46、(x)real(a)ans=1/2*x+1/2*conj(x)552.syms函数函数 syms函数的功能与函数的功能与sym函数的功能相似。函数的功能相似。syms函函数可以在一个语句中同时定义多个符号对象,格式为:数可以在一个语句中同时定义多个符号对象,格式为:syms(arg1,arg2,参数参数)syms arg1 arg2参数参数 syms a b real(a+b*j)ans=1/2*a+1/2*i*b+1/2*conj(a+i*b)syms x y real z=x+i*y;real(z)ans=x syms x unreal real(z)ans=1/2*x+1/2*conj(
47、x)564.1.3 定义符号表达式定义符号表达式 符号表达式由符号变量、函数、算术运算符等组符号表达式由符号变量、函数、算术运算符等组成。符号表达式的定义有以下三种方法:成。符号表达式的定义有以下三种方法:1.单引号创建符号表达式单引号创建符号表达式 f=exp(x)%创建符号函数创建符号函数f=exp(x)f=a*x3+b*x2+c=0%创建符号代数方程创建符号代数方程f=a*x3+b*x2+c=02.用用sym函数创建符号表达式函数创建符号表达式 f=sym(a*x3+b*x2+c=0)%创建符号表达式创建符号表达式f=a*x3+b*x2+c=0573.用用syms函数创建符号表达式函数创
48、建符号表达式 syms函数只能生成符号函数,不能生成符号方程。函数只能生成符号函数,不能生成符号方程。syms x y u;%预定义符号变量预定义符号变量 f=exp(x*y/u)%创建符号函数创建符号函数 f=exp(x*y/u)584.符号变量查询符号变量查询 在数学表达式中,一般习惯于使用排在前面的字在数学表达式中,一般习惯于使用排在前面的字母表中的字母作为变量的系数,而用排在后面的字母母表中的字母作为变量的系数,而用排在后面的字母表示变量。表示变量。f=ax2+bx+c 可以用可以用findsym函数了解函数中使用的变量个数以函数了解函数中使用的变量个数以及变量名。格式为:及变量名。格
49、式为:findsym(f,n)说明说明:(1)f为用户定义的符号表达式,不能是字符串;为用户定义的符号表达式,不能是字符串;(2)n为正整数,表示查询变量的个数;为正整数,表示查询变量的个数;(3)n=i表示查询表示查询i个系统默认变量,个系统默认变量,n值省略表示查值省略表示查询所有的符号变量。询所有的符号变量。59 当字符表达式中含有多于一个的变量时,只有一当字符表达式中含有多于一个的变量时,只有一个变量是独立变量。若未告知个变量是独立变量。若未告知MATLAB哪一变量是独哪一变量是独立变量,立变量,MATLAB将基于以下规则选择一个:将基于以下规则选择一个:缺省的变量是唯一的;缺省的变量
50、是唯一的;若有若有x,选择,选择x作为独立变量;作为独立变量;若无若无x,选择除,选择除i和和j的小写字母,字母顺序中最接近的小写字母,字母顺序中最接近x的字母;若与的字母;若与x的距离相同,则的距离相同,则x后面的优先;后面的优先;所有小写字母均优先于大写字母为独立变量。所有小写字母均优先于大写字母为独立变量。60数学表达式数学表达式系统默认自变量系统默认自变量xnxcos(a*t+b)texp(u*y*t)ys*z+5*u*vzt*theta3t2*i+3*jj例例:查询符号函数:查询符号函数f=exp(u*y*t)和和g=xn的默认变量。的默认变量。syms n t u x y;f=ex