矩阵运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矩阵操作
矩阵的转置与共轭转置

’ 共轭转置 .’ 转置,矩阵元素不取共轭 点与单引号之间不能有空格!
例:>> A=[1 2;2i 3i]
>> B=A’ >> C=A.’
矩阵操作
改变矩阵的形状:reshape
reshape(A,m,n): 将矩阵元素按 列方向 进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等!

返回向量 X 的长度 等价于 max(size(A))
矩阵基本运算
矩阵的加减:对应分量进行运算
要求参与加减运算的矩阵具有 相同的维数
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4]
>> C=A+B; D=A-B;
矩阵的普通乘法
要求参与运算的矩阵满足线性代数中矩阵相乘的原则
例:>> A=[1 2 3; 4 5 6]; B=[2 1; 3 4];
>> C=A*B
矩阵基本运算
矩阵的除法:/、\ 右除和左除
若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) A\B <==> A 的逆左乘 B <==> inv(A)*B 通常,矩阵除法可以理解为 X=A\B <==> A*X=B X=B/A <==> X*A=B 当 A 和 B 行数相等时即可进行左除 当 A 和 B 列数相等时即可进行右除
x1 x2 x3 x4 1 x1 x2 x3 x4 1 2 x 2 x x x 1 2 3 4 1
解:在有无穷多解的情况可用三种方法求得通解。
方法一:用rref化为行最简形以后求解。 >> clear;a=[1 -1 1 -1;-1 1 1 -1;2 -2 -1 1];b=[1;1;-1]; >> [rank(a),rank([a,b])] ans = 2 2 %秩相等且小于4,说明有无穷多解
Kronecker 乘积的性质


A B 是 np×mq 矩阵;通常 A B B A
任何两个矩阵都有 Kronecker 乘积 Matlab 中实现两个矩阵 Kronecker 相乘的函数为 kron(A,B) Kronecker乘积有时也称张量积
矩阵的数组运算
数组运算:对应元素进行运算
矩阵操作
查看矩阵的大小:size
size(A) 列出矩阵 A 的行数和列数 size(A,1) 返回矩阵 A 的行数 size(A,2) 返回矩阵 A 的列数

例:>> A=[1 2 3; 4 5 6]
>> size(A) >> size(A,1) >> size(A,2) length(x) length(A)
矩阵操作
矩阵的旋转


fliplr(A) 左右旋转 flipud(A) 上下旋转
rot90(A) 逆时针旋转 90 度; rot90(A,k) 逆时针旋转 k×90 度 >> B=fliplr(A) >> C=flipud(A) >> D=rot90(A), E=rot90(A,-1)
例:>> A=[1 2 3;4 5 6]
Matlab基础
向量与矩阵运算
向量与矩阵运算
向量与矩阵的生成

向量的生成 直接输入: a=[1,2,3,4] 冒号运算符 从矩阵中抽取行或列
例:a=[1:4] ==> a=[1, 2, 3, 4]
b=[0:pi/3:pi] ==> b=[0, 1.0472, 2.0944, 3.1416] c=[6:-2:0] ==> c = [6, 4, 2, 0]
若 a 是标量,A 是方阵,且 [V,D] = eig(A),则 a^A = V*(a^D)/V 若 A, P 均是矩阵,则 A^P 无定义
矩阵的 Kronecker 乘积
矩阵 Kronecker 乘积的定义
设A是n×m矩阵,B是p×q矩阵,则A与B的kronecker乘积为: a11 B a12 B a1m B a B a B a B 22 2m C A B 21 a B a B a B n2 nm n1
矩阵的乘方
d1 0 0 d2 D 若 a 是标量, 0 0 0 0 dn
0 a ^ d1 0 a^ d2 则 a^ D 0 0
0 0 a^ dn
函数取值
例:
exp(a11 ) exp(a12 ) exp(a21 ) exp(a22 ) exp(A) exp(a ) exp(a ) m1 m2 exp(a1n ) exp(a2 n ) exp(amn )
Inf Inf 可见,不能直接求解。 >> A=[1 2;2 4;0 0];B=[1;2;0];x=A\B %增加0x+0y=0,使A不为方阵 Warning: Rank deficient, rank = 1 tol = 2.9790e-015.
x=
0 0.5000 仍可求一特解。
例:求线性方程组的通解
解: >> A=[1 1;1 -1];B=[1;4];x=A\B x= 2.5000 -1.5000 求得唯一解。 >> A=[1 2 1;3 -2 1];B=[1;4];x=A\B x= 1.2500 -0.1250 0 仅求得一个特解。 >> A=[1 2;3 -2;1 -1];B=[1;4;2];x=A\B x= 1.2838 -0.1757 求得一最小二乘近似解。
函数取值
函数作用在矩阵上的取值
设 x 是变量, f 是一个函数

当 x = a 是标量时,f(x) = f(a)也是一个标量

当 x = [a, b, … , c] 是向量时,f(x)= [f(a), f(b), … , f(c)]
f 作用在 x 的每个分量上

若 A 是矩阵,则 f(A) 是一个与 A 同形状的矩阵
X=A\B <==> A*X=B X=B/A <==> X*A=B
当A为方阵,其结果与inv(A)*B基本一致;
当A不为方阵,除法将分三种情况自动检测:若为 超定方程组(既无解)除法将给出最小二乘意义上的 近似解,即使向量AX-B的长度最小;若为不定方程组 (即无穷多解),除法将给出一个具有最多零元素的 特解(不是通解);若为唯一解,除法将给出这个解。 用户对结果应有一个正确的认识。
矩阵操作
提取矩阵的部分元素: 冒号运算符

A(:) A的所有元素 A(:,:) 二维矩阵A的所有元素 A(:,k) A的第 k 列, A(k,:) A的第 k 行
A(k:m) A的第 k 到第 m 个元素 A(:,k:m) A的第 k 到第 m 列组成的子矩阵
自己动手
A(:) 与 A(:,:) 的区别 ? 如何获得由 A 的第一、三行和第一、二列组成的子矩阵?

数组运算包括:点乘、点除、点幂
相应的数组运算符为: “.* ” , “./ ” , “.\ ” 和 “ .^ ” 点与算术运算符之间不能有空格!
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4];
>> C=A.*B; D=A./B; E=A.\B; F=A.^B; 参与运算的对象必须具有相同的形状!
>> rref([a,b]) ans =
1 -1 0 0 0 0 0 1 -1 1 0 0 0 0 0 即通解为:小x1=x2,x3=x4+1(x2,x4自由)
方法二:先用除法求出一个特解,再用null求得齐次组的基础解 系。 >> clear;a=[1 -1 1 -1;-1 1 1 -1;2 -2 -1 1];b=[1;1;-1]; >> x0=a\b;x=null(a) Warning: Rank deficient, rank = 2 tol = 2.1756e-015. x= -0.7071 0 -0.7071 0 -0.0000 0.7071 -0.0000 0.7071 通解为k1*x(:,1)+k2*x(:,2)+x0 方法三:使用solve求解。(见第8章)
例: 解下列方程组
x y 1 () 1 (定解方程组) x y 4 x 2y z 1 (2) (不定方程组) 3 x 2 y z 4 x 2y 1 (3) 3 x 2 y 4 (超定方程组) x y 2 x 2y 1 (4) (奇异方程组) 2 x 4 y 2
特征值和特征向量 [V,D]=eig(A) 返回方阵A的特征值和特征向量。其中D为特 征值构 成的对角阵,每个特征值对应的V的为属于该特征值的一个 特征向量,每个特征向量都是单位向量,并且属于同一特 征值 的线性无关特征向量已正交化。
eig(A) 返回方阵A的特征值构成的列向量。
例: >> A=[1 2 3;2 3 4;2 4 5];[V,D]=eig(A),t=eig(A) V= -0.3957 -0.5765 -0.7149 D= -0.2167 + 0.5832i -0.2167 - 0.5832i 0.6313 0.6313 -0.3914 - 0.2471i -0.3914 + 0.2471i
9.3329 0 0
t=
0 0 -0.1665 + 0.2818i 0 0 -0.1665 - 0.2818i
9.3329 -0.1665 + 0.2818i -0.1665 - 0.2818i
矩阵的乘方
A 是方阵,p 是正整数 A^p 表示 A 的 p 次幂,即 p 个 A 相乘。
ຫໍສະໝຸດ Baidu
若 A 是方阵,p 不是正整数 A^p 的计算涉及到 A 的特征值分解,即若 A = V*D*V-1 则 A^p=V*(D.^p)/V
线性代数运算的MATLAB命令 MATLAB是矩阵化程序设计语言,所以处理矩阵和向量运算特别 方便。关于矩阵和向量的一些基本运算命令已在前面有所介绍,常 用的命令和函数还有
zeros ones eye linspace rand det inv norm cond 生成0矩阵 eig 生成1矩阵 diag 生成单位矩阵 trace 生成等距行向量 rank 生成随机矩阵 rref 方阵的行列式 orth 方阵的逆 null 范数 jordan 方阵的条件数 特征值、特征向量 对角矩阵 方阵的迹 矩阵的秩 行最简形 正交规范 求基础解系 Jordan 分解
常见矩阵生成函数
zeros(m,n) ones(m,n) eye(m,n) diag(X) tril(A) triu(A) rand(m,n) randn(m,n) 生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n) 生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) 生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 提取一个矩阵的下三角部分 提取一个矩阵的上三角部分 产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n) 产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)
>> A=[1 2;2 4];B=[1;2];x=A\B Warning: Matrix is singular to working precision. (Type "warning off MATLAB:singularMatrix" to suppress this warning.) x=
向量与矩阵运算
向量与矩阵的生成(续)

矩阵的生成 直接输入: A=[1, 2, 3; 4, 5, 6; 7, 8, 9] 由向量生成 通过编写m文件生成 由函数生成
例:>> x=[1,2,3];y=[2,3,4];
>> A=[x,y], B=[x;y]
例:>> C=magic(3)
相关文档
最新文档