MATLAB的数值计算第3章课件_第1页
MATLAB的数值计算第3章课件_第2页
MATLAB的数值计算第3章课件_第3页
MATLAB的数值计算第3章课件_第4页
MATLAB的数值计算第3章课件_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 MATLAB的数值计算矩阵的构建矩阵元素矩阵运算矩阵的关系运算和逻辑运算多项式运算第1页,共52页。3.1 矩阵的构建3.1.1 直接输入创建矩阵 创建矩阵最简单的方法就是直接输入矩阵元素,输入格式有以下的要求:整个矩阵以“ ”作为首尾;行与行之间用分号“;”或回车键分隔;每行中的元素用“,”或空格分隔;矩阵中的元素可以是数字或者表达式;如果矩阵中没有元素,这样的矩阵称为空阵(Empty Matrix)。第2页,共52页。【例1】矩阵的分行输入A=1, 2, 3 4, 5, 6 7, 8, 9 显示结果如下:A = 1 2 3 4 5 6 7 8 9 a=1; b=2; c=3;x=5

2、 b c; a*b a+c c/bx= 5.000 2.000 3.000 2.000 4.000 1.500【例2】命令窗口中输入y=2 4 5;3 6 8 y= 2 4 5 3 6 8第3页,共52页。 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 0第4页,共52页。3.1.2 利用内部函数产生矩阵 1. 利用内部函数可以很容易生成一些常见的特殊矩阵,常用函数如下:eye(m,n)产生单位矩阵zeros(m,n)产生元素

3、全为0的矩阵ones(m,n)产生元素全为1的矩阵rand(m,n)产生均匀分布的随机元素矩阵,范围01randn(m,n)产生正态分布的随机元素矩阵diag(x)产生矩阵x的对角阵说明:当eye、zeros、ones、rand、randn函数只有一个参数n时,则产生nn的方阵。第5页,共52页。 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 = 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

4、 = 8 1 6 3 5 7 4 9 2 diag(a)ans = 8 5 2第6页,共52页。例如:eye(2,3)ans= 1 0 0 0 1 0zeros(2,3)ans= 0 0 0 0 0 0ones(2,3)ans= 1 1 1 1 1 1eye(2)ans= 1 0 0 1zeros(2)ans= 0 0 0 0ones(2)ans= 1 1 1 1第7页,共52页。3.1.3 数组的构建 在MATLAB中数组可以看作行向量,即只有一行的矩阵,MATLAB创建数组可用以下特殊命令:1. 冒号生成法(初值:步长:终值) 0:0.4:2ans = 0 0.4000 0.8000 1.

5、2000 1.6000 2.0000初值=0,终值=2,步长=0.4,步长若省略,默认间隔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 10第8页,共52页。2. 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.1

6、623 10.0000 31.6228 100.0000初值=100,终值=102,元素个数=5,公比=100.53.1.4 从外部的数据文件中导入矩阵第9页,共52页。3.2 矩阵的元素3.2.1 矩阵元素的下标表示 1. 全下标表示 一个mn矩阵A的第i行,第j列元素表示为A(i,j),即由行下标和列下标表示,行列数从1开始。注意:当给元素赋值时,如果超出矩阵范围,则自动扩充矩阵;当取值时,若超出矩阵范围,则提示错误。 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 dimension

7、s.第10页,共52页。2. 单下标表示 将矩阵的所有列按从左到右的顺序接成“一维长列”,然后对元素进行编号。一个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 6第11页,共52页。3.2.2 子矩阵 1. 全下标表示(1)a(i 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)

8、:取行数最大值,列数为kj的元素构成的子矩阵2. 单下标表示a(i j; k l):取单下标为i、j、k、l的元素构成子矩阵。第12页,共52页。 a=magic(5)a = 17 24 1 8 15 23 5 7 14 16 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)(取单下标为1、2、3、5的元素构成

9、子矩阵)ans = 17 4 10 11第13页,共52页。3.2.3 矩阵元素的删除 删除矩阵元素可以简单的将该元素赋值为空矩阵(用 表示)。 a=rand(3,4)a = 0.4565 0.4447 0.9218 0.4057 0.0185 0.6154 0.7382 0.9355 0.8214 0.7919 0.1763 0.9169 a(2)=(把第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.9

10、355 0.9169第14页,共52页。3.2.4 矩阵元素的数量1. numel函数 n=numel(a):计算矩阵a中元素的总数2. size函数d=size(a) :d=m n,m为a的行数,n为a的列数m n=size(a): 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)(第2行元素的数量)m = 3 numel(a)ans = 6第15页,共52页。3

11、.3 矩阵与数组运算MATLAB算术运算矩阵算术运算数组算术运算矩阵算术运算:按照线性代数运算法则定义数组算术运算:按照元素逐个执行第16页,共52页。3.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 5第17页,共52页。2. 矩阵的乘法 矩阵的乘法使用“*”运算符,两个矩阵要相乘,只有当前一矩阵的列数

12、与后一矩阵行数相等或者其中一个为标量时才能进行。 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 12第18页,共52页。3. 矩阵的除法 矩阵的除法有左除和右除两种,分别用“”和“/”表示。通常矩阵除法可以用来求未知矩阵。 若 A*X=B,则 X=AB 若 X*A=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 a

13、cans = 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 c/bans = 1.0000 2.0000 3.0000 4.0000第19页,共52页。例:求解以下方程 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 4第20页,共52页。4. 矩阵的乘方 矩阵的乘方使用“”运算符,如AP,当P为整数时,该指令运算结果可做如下解释:当P0,表示方阵A直接自乘P次;当P a=1 2;3 4a = 1 2 3 4 a2ans = 7 10 15 22 a0ans

14、 = 1 0 0 1 a(-2)ans = 5.5000 -2.5000 -3.7500 1.7500第21页,共52页。5. 矩阵的转置 矩阵的转置使用“”运算符,矩阵的转置就是将第i行第j列的元素和第j行第i列的元素进行互换。 对于有复数元素的矩阵A,A为共轭转置,A.为非共轭转置。 a=1 2;3 4a = 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

15、3.0000 + 1.0000i 2.0000 + 1.0000i 4.0000 + 1.0000i第22页,共52页。6. 矩阵的逆(inv) 在MATLAB中,使用函数inv计算矩阵的逆矩阵。A是可逆矩阵的充分必要条件是|A|0,即可逆矩阵是非奇异方阵。 a=magic(3)a = 8 1 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.

16、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.0124 0.0293第23页,共52页。7. 方阵的行列式(det) 方阵和行列式是两个不同的概念,n阶方阵是n2个数按一定方式排成的数表,n阶行列式则是这些数按一定的运算法则确定的一个数。在MATLAB中,求方阵的行列式的函数是det。 a=magic(3)a = 8 1 6 3 5

17、7 4 9 2 det(a)ans = -360第24页,共52页。8. 矩阵的特征值(eig) 在MATLAB中,以函数eig计算矩阵的特征值,并以向量的形式存放。 如果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

18、 1.0000第25页,共52页。9. 矩阵的特征多项式(poly) 在MATLAB中,以函数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 2第26页,共52页。10. 矩阵的秩(rank) 在MATLAB中,以函数rank计

19、算矩阵的秩。 设在矩阵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 = 0第27页,共52页。3.3.2 数组的运算 .+ 加法 .- 减法 .* 乘法 . 幂 . 左除 ./ 右除 . 转置 数组的运算操作都是对元素逐个进行的。数组运算符与矩阵运算符的区别便是多一个小黑点。 a=1 2 3; b=4 5 6; a.*bans = 4 10 18 a.2ans = 1 4

20、 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.0000i第28页,共52页。 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 a.*bans = 8 1 6 3 5 7 4 9 2 b2 (对矩阵求平方)ans = 9

21、1 67 67 67 91 67 67 67 91 b.2(对元素求平方)ans = 64 1 36 9 25 49 16 81 4第29页,共52页。3.4 矩阵关系运算与逻辑运算说明:(1)表达式输入:非0“逻辑真”,0“逻辑假”(2)表达式输出:1“逻辑真”,0“逻辑假”3.4.1 关系运算两个维数相同的矩阵进行比较:相对应元素进行比较,结果为一个同维数矩阵;矩阵和标量进行比较:标量和矩阵中的每一个元素进行比较,结果为一个同维数矩阵。第30页,共52页。关系操作符=大于等于大于=等于 a=1 2; 3 4; b=1 3; 4 4; a abans = 0 0 0 0 a=bans = 1

22、 0 0 1 a=2ans = 0 1 0 0 a=bans = 1 1 1 1 、=仅比较实部,而=、=同时比较实部和虚部。第31页,共52页。3.4.2 逻辑运算 如果A和B是维数相同的矩阵,或者其中一个是标量,则可以对矩阵进行逻辑运算。与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 1第32页,共52页。3.5 各种运算

23、符的优先级 MATLAB对各种运算的优先级别做了规定。计算时,遵守的规定是较高优先级先于较低优先级,相同优先级遵从从左到右原则。优先级运算符最高( ).、.、.*、*、./、 /、.、+、-:、=、=、=&最低|第33页,共52页。 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 0第34页

24、,共52页。3.6 基本统计处理3.6.1 查最大值(max)1. C=max(A) 返回矩阵A各列的最大值;若A为向量,返回该向量的最大值。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,按行操作。第35页,共52页。 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

25、5 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 1第36页,共52页。3.6.2 查取最小值(min) min函数用来求取数据序列中的最小值,使用方法和max函数相同。3.6.3 求中值(median)1. Y=median(X):返回矩阵X各列元素的中值赋予行向量Y;若X为向量,Y为标量。2. Y=median(X,dim):将数组X的第dim维方向的元素求其中值赋予向量Y;若dim=1,按列操作(默认),若dim=2,按行操作。 x=3 5 1; 9 4 6;

26、median(x)ans = 6.0000 4.5000 3.5000 median(x,2)ans = 3 6第37页,共52页。3.6.4 求和(sum)1. Y=sum(X):返回矩阵X各列元素的和赋予行向量Y;若X为向量,Y为标量。2. Y=sum(X,dim):将数组X的第dim维方向的元素的和赋予向量Y;若dim=1,按列操作,若dim=2,按行操作。 x=3 5 1; 9 4 6; sum(x)ans = 12 9 7 sum(ans)ans = 28 sum(x,2)ans = 9 19第38页,共52页。3.6.5 求平均值(mean)1. Y=mean(X):返回矩阵X各列

27、元素的平均值赋予行向量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.5000 3.5000 4.5000 mean(a,2)ans = 2 5第39页,共52页。3.6.6 求积(prod)1. Y=prod(X):返回矩阵X各列元素的积赋予行向量Y;若X为向量,Y为标量。2. Y=prod(X,dim):将数组X的第dim维方向的元素的积赋予向量Y;若dim=1,按列操作,若dim=2,按行操

28、作。 a=1 2 3;4 5 6a = 1 2 3 4 5 6 prod(a)ans = 4 10 18 prod(a,2)ans = 6 120第40页,共52页。3.6.7 排序(sort)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

29、 3 7 3 6 8 5 sort(x,2)ans = 3 5 7 3 6 8 0 2 4 sort(x,2,descend)ans = 7 5 3 8 6 3 4 2 0第41页,共52页。3.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=poly2sym(P) y = 3*x5+5*x4+x2+12第4

30、2页,共52页。2. 由多项式的根逆推多项式 若已知某多项式的根,可用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-160第43页,共52页。3.7.2 多项式的运算1. 多项式的求值(1)代数多项式求值:polyval函数 polyval(P,X)计算向量P为系数的多项式在点X的值,如果X是矩阵或者向量,该命令对X的

31、每个元素都进行计算。(2)矩阵多项式求值:polyvalm函数 Y=polyvalm(P,X)计算向量P为系数的多项式在矩阵X的值,向量X必须为方阵。Y=P(1)Xn+P(2)Xn-1+P(N)X+P(N+1)I第44页,共52页。 p=1 2 3; poly2sym(p) ans = x2+2*x+3 a=1 2;3 4; polyval(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 = polyvalmMat

32、rix must be square.第45页,共52页。2. 多项式的根 求多项式的根,即求使多项式为零的值。设多项式由行向量p表示,其系数按降序排列,使用roots函数计算多项式的根,格式为roots(p)。例:计算多项式x4+3x2+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 第46页,共52页。3. 多项式的四则运算(1)加法和减法 如果两个多项式的向量阶数相同,可直接进行加减法计算;如果向量阶数不同,不能直接进行运算,需要在低阶多项式的前面补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-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论