线性代数MATLAB中的矩阵
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0.1159 -0.0729 0.0171 -0.0534 0.1152 0.0418
则可使x*c为单位阵,即 >> q=x*c q=
1.0000 0.0000 0.0000 1.0000 但应注意c*x并非单位阵,即 >> p=c*x p= 0.8293 -0.1958 0.3213 -0.1958 0.7754 0.3685 0.3213 0.3685 0.3952
x(t)=etAx(0)
图5.2 三维状态轨迹
5.1.7 特征值 矩阵A的特征值λ和特征矢量v,满足 Av=λv 如果以特征值构成对角阵Λ,相应的特征矢量作为列构成矩阵V,则有 AV=VΛ 如果V为非奇异,则上式就变成了特征值分解: A=VΛV–1
5.1.3 线性代数方程求解 一般线性方程可表示成
AX=B XA=B
在MATLAB中,当矩阵A为方阵时,可很容易求出它的解:X=A\B或X=B/A。当 矩阵A为非奇异时,线性方程的解惟一;当矩阵A为奇异时,线性方程的解要么不存 在,要么不惟一。当矩阵A为(m×n)维矩阵,且m>n时,在方程AX=B中,方程个数 多于变量个数,因此应采用最小二乘法来求解。例如,对一组测量数据
函数sqrtm(A)可求出。函数expm(A)可计算出矩阵A的指数,即e^A。这些函数 对求解微分方程是很有用的。例如,要求解微分方程
x Ax
其解为
因此可输入 A=[0 -6 -1; 6 2 -16; -5 20 -10]; x0=[1;1;1]; X=[]; for t=0:.01:1
X=[X expm(t*A)*x0]; end plot3(X(1,:),X(2,:),X(3,:),'-o') grid on
A=QR,例如: >> A=[9 4;2 8;6 7]; [Q R]=qr(A) Q=
-0.8182 0.3999 -0.4131 -0.1818 -0.8616 -0.4739 -0.5455 -0.3126 0.7777 R= -11.0000 -8.5455
0 -7.4817 00
5.1.6 矩阵求幂和矩阵指数 矩阵求幂如A2、B3可很容易求出: A^2 B^3 元素对元素的求幂,可输入: A.^2 B.^3
5.1 线 性 代 数
5.1.1 MATLAB中的矩阵 一般来说,矩阵和阵列经常互相交替使用,MATLAB还允许使用多维阵列,因
此我们严格定义矩阵为二维实或复阵列,它表示一线性变换。定义在矩阵之上的线Baidu Nhomakorabea性代数已在许多技术领域得到应用,因此我们将详细介绍MATLAB中的矩阵。
矩阵的加、减、乘、除、转置运算是最基本的运算,它们应符合维数一致的要 求,但标量可看作是任意维数的矩阵,例如设S为标量,则下列运算都是合法的:
5.1.5 LU、QR分解 通过高斯对消或LU分解法,可将任意方阵表示成一个下三角阵与一个上三角阵
的乘积:A=LU,例如: >> A=[1 2 3;4 5 6;4 2 6]; [L,U]=lu(A) L= 0.2500 -0.2500 1.0000 1.0000 0 0 1.0000 1.0000 0 U= 4.0000 5.0000 6.0000 0 -3.0000 0 0 0 1.5000
通过LU分解后,可很容易得到 det(A)=det(L)×det(U) inv(A)=inv(U)×inv(L) 求解线性方程Ax=b时,可得到 x=U\(L\b) 这种方法的运算速度更快。 正交矩阵或具有正交列的矩阵,其所有列的长度为1,且与其它列正交。即如 果Q为正交矩阵,则有 Q'Q=I
通过正交或QR分解,可将任意二维矩阵分解成一个正交阵和一个上三角阵的乘 积:
A+S
A*S
矩阵的数组运算是元素对元素的运算,例如: a=[1 2 3;4 5 6;7 8 9]; b=[1 1 1;3 3 3;9 9 9]; c=a.*b c=
123 12 15 18 63 72 81
5.1.2 矢量范数和矩阵范数 矢量x的p范数定义为
|| x ||p (
x
p i
)1/
p
当p=2时为常用的欧拉范数,一般p还可以取1和∞。这在MATLAB中可利用 norm(x,p)函数实现,p缺省时为p=2。例如:
v=[2 0 -1]; n=[norm(v,1),norm(v),norm(v,inf)] n= 3.0000 2.2361 2.0000
矩阵A的p范数定义为
||
A
||
t=[0 .3 .8 1.1 1.6 2.3]'; y=[.82 .72 .63 .60 .55 .50]'; A=[ones(size(t)) exp(-t)]; C=A\y T=[0:.1:2.5]'; Y=[ones(size(T)) exp(-T)]*C; plot(T,Y,'-',t,y,'o') title( '最小二乘法曲线拟合' ) xlabel('\itt'), ylabel('\ity')
图5.1 曲线拟合
5.1.4 矩阵求逆 det(A)函数可求得矩阵A的行列式值。inv(A)函数可求得矩阵A的逆矩阵。从理
论上说,当A为方阵且非奇异时,X=inv(A)*B等同于X=A\B,但后者计算所需的时 间更短、内存更少、误差检测特性更佳。
pinv(A)用于计算非方阵的伪逆,例如: >> c=[9 4;2 8;6 7]; x=pinv(c) x=
p
max x
|| Ax ||p || x ||p
一般p取1,2和∞。这也可由MATLAB的norm(A,p)函数计算,缺省时p=2。例 如:
>> A=fix(10*rand(3,2))
A=
94
28
67
>> N=[norm(A,1) norm(A) norm(A,inf)]
N=
19.0000 14.8015 13.0000
t=[0 .3 .8 1.1 1.6 2.3]'; y=[.82 .72 .63 .60 .55 .50]';
我们拟用延迟指数函数来拟合这组数据:
y(t)≈c1+c2e–t 将测量数据代入后得到6个方程,而未知变量仅有c1、c2两个,因此应利用最 小二乘原理来求解,并以图形形式给出拟合结果。程序如下:
则可使x*c为单位阵,即 >> q=x*c q=
1.0000 0.0000 0.0000 1.0000 但应注意c*x并非单位阵,即 >> p=c*x p= 0.8293 -0.1958 0.3213 -0.1958 0.7754 0.3685 0.3213 0.3685 0.3952
x(t)=etAx(0)
图5.2 三维状态轨迹
5.1.7 特征值 矩阵A的特征值λ和特征矢量v,满足 Av=λv 如果以特征值构成对角阵Λ,相应的特征矢量作为列构成矩阵V,则有 AV=VΛ 如果V为非奇异,则上式就变成了特征值分解: A=VΛV–1
5.1.3 线性代数方程求解 一般线性方程可表示成
AX=B XA=B
在MATLAB中,当矩阵A为方阵时,可很容易求出它的解:X=A\B或X=B/A。当 矩阵A为非奇异时,线性方程的解惟一;当矩阵A为奇异时,线性方程的解要么不存 在,要么不惟一。当矩阵A为(m×n)维矩阵,且m>n时,在方程AX=B中,方程个数 多于变量个数,因此应采用最小二乘法来求解。例如,对一组测量数据
函数sqrtm(A)可求出。函数expm(A)可计算出矩阵A的指数,即e^A。这些函数 对求解微分方程是很有用的。例如,要求解微分方程
x Ax
其解为
因此可输入 A=[0 -6 -1; 6 2 -16; -5 20 -10]; x0=[1;1;1]; X=[]; for t=0:.01:1
X=[X expm(t*A)*x0]; end plot3(X(1,:),X(2,:),X(3,:),'-o') grid on
A=QR,例如: >> A=[9 4;2 8;6 7]; [Q R]=qr(A) Q=
-0.8182 0.3999 -0.4131 -0.1818 -0.8616 -0.4739 -0.5455 -0.3126 0.7777 R= -11.0000 -8.5455
0 -7.4817 00
5.1.6 矩阵求幂和矩阵指数 矩阵求幂如A2、B3可很容易求出: A^2 B^3 元素对元素的求幂,可输入: A.^2 B.^3
5.1 线 性 代 数
5.1.1 MATLAB中的矩阵 一般来说,矩阵和阵列经常互相交替使用,MATLAB还允许使用多维阵列,因
此我们严格定义矩阵为二维实或复阵列,它表示一线性变换。定义在矩阵之上的线Baidu Nhomakorabea性代数已在许多技术领域得到应用,因此我们将详细介绍MATLAB中的矩阵。
矩阵的加、减、乘、除、转置运算是最基本的运算,它们应符合维数一致的要 求,但标量可看作是任意维数的矩阵,例如设S为标量,则下列运算都是合法的:
5.1.5 LU、QR分解 通过高斯对消或LU分解法,可将任意方阵表示成一个下三角阵与一个上三角阵
的乘积:A=LU,例如: >> A=[1 2 3;4 5 6;4 2 6]; [L,U]=lu(A) L= 0.2500 -0.2500 1.0000 1.0000 0 0 1.0000 1.0000 0 U= 4.0000 5.0000 6.0000 0 -3.0000 0 0 0 1.5000
通过LU分解后,可很容易得到 det(A)=det(L)×det(U) inv(A)=inv(U)×inv(L) 求解线性方程Ax=b时,可得到 x=U\(L\b) 这种方法的运算速度更快。 正交矩阵或具有正交列的矩阵,其所有列的长度为1,且与其它列正交。即如 果Q为正交矩阵,则有 Q'Q=I
通过正交或QR分解,可将任意二维矩阵分解成一个正交阵和一个上三角阵的乘 积:
A+S
A*S
矩阵的数组运算是元素对元素的运算,例如: a=[1 2 3;4 5 6;7 8 9]; b=[1 1 1;3 3 3;9 9 9]; c=a.*b c=
123 12 15 18 63 72 81
5.1.2 矢量范数和矩阵范数 矢量x的p范数定义为
|| x ||p (
x
p i
)1/
p
当p=2时为常用的欧拉范数,一般p还可以取1和∞。这在MATLAB中可利用 norm(x,p)函数实现,p缺省时为p=2。例如:
v=[2 0 -1]; n=[norm(v,1),norm(v),norm(v,inf)] n= 3.0000 2.2361 2.0000
矩阵A的p范数定义为
||
A
||
t=[0 .3 .8 1.1 1.6 2.3]'; y=[.82 .72 .63 .60 .55 .50]'; A=[ones(size(t)) exp(-t)]; C=A\y T=[0:.1:2.5]'; Y=[ones(size(T)) exp(-T)]*C; plot(T,Y,'-',t,y,'o') title( '最小二乘法曲线拟合' ) xlabel('\itt'), ylabel('\ity')
图5.1 曲线拟合
5.1.4 矩阵求逆 det(A)函数可求得矩阵A的行列式值。inv(A)函数可求得矩阵A的逆矩阵。从理
论上说,当A为方阵且非奇异时,X=inv(A)*B等同于X=A\B,但后者计算所需的时 间更短、内存更少、误差检测特性更佳。
pinv(A)用于计算非方阵的伪逆,例如: >> c=[9 4;2 8;6 7]; x=pinv(c) x=
p
max x
|| Ax ||p || x ||p
一般p取1,2和∞。这也可由MATLAB的norm(A,p)函数计算,缺省时p=2。例 如:
>> A=fix(10*rand(3,2))
A=
94
28
67
>> N=[norm(A,1) norm(A) norm(A,inf)]
N=
19.0000 14.8015 13.0000
t=[0 .3 .8 1.1 1.6 2.3]'; y=[.82 .72 .63 .60 .55 .50]';
我们拟用延迟指数函数来拟合这组数据:
y(t)≈c1+c2e–t 将测量数据代入后得到6个方程,而未知变量仅有c1、c2两个,因此应利用最 小二乘原理来求解,并以图形形式给出拟合结果。程序如下: