a是m*n实矩阵,则a的行向量组线性相关所张成的线性空间是什么

四元数矩阵方程组解的若干研究
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
四元数矩阵方程组解的若干研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口矩阵的秩与行列式的意义_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
矩阵的秩与行列式的意义
矩​阵​的​秩​与​行​列​式​的​几​何​意​义
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢Matlab与线性代数
一、线性代数基本方程组
基本方程组:
矩阵表示:
解决问题的视角:
1、解联立方程的视角 (行阶梯变换
& &矩阵运算)
着重研究解x,即研究线性方程组的解法。中学里的解方程和MATLAB的矩阵除法就是这样。
要点:矩阵的每一行代表一个方程,m行代表m个线性联立方程。 n列代表n个变量。如果m是独立方程数,根据mn确定方程是
‘欠定’、‘适定’ 还是
‘超定’。对这三种情况都会求解了,研究就完成了。必须剔除非独立方程。行阶梯形式、行列式和秩的概念很大程度上为此目的而建立。
2、向量空间中向量的合成的视角
(用向量空间解方程组)
把A各列看成n个m维基本向量,线性方程组看成基向量的线性合成:
要点:解x是这些基向量的系数。它可能是常数(适定方程),也可能成为其中的一个子空间(欠定方程)
。要建立其几何概念,并会求解或解空间。
3、线性变换或映射的视角
(线性变换及其特征)
把b看成变量y,着重研究把Rn空间的x变换为Rm空间y 的效果,就是研究线性变换系数矩阵A的特征对变换的影响。
要点:就是要找到适当的变换,使研究问题的物理意义最为明晰。特征值问题就是一例。
二、线性代数建模与应用概述
介绍一些大的系统工程中使用线性代数的情况,使读者知道为什么线性代数在近几十年来变得如此的重要。
Leontief教授把美国的经济用500个变量的500个线性方程来描述,在1949年利用当时的计算机解出了42&42的简化模型,使他于1973年获得诺贝尔经济奖,从而大大推动了线性代数的发展。
把飞行器的外形分成若干大的部件,每个部件沿着其表面又用三维的细网格划分出许多立方体,这些立方体包括了机身表面以及此表面内外的空气。对每个立方体列写出空气动力学方程,其中包括了与它相邻的立方体的共同边界变量,这些方程通常都已经简化为线性方程。对一个飞行器,小立方体的数目可以多达400,000个,而要解的联立方程可能多达2,000,000个。
飞行器的运动要用三个转动和三个平移共六个变量来表示(像在第九章中介绍的那样)。除此以外,为了控制飞行器的三维转动,需要三个控制面,即方向舵(垂直尾翼)、升降舵(水平尾翼)和副翼,它们的偏转角又构成了三个变量。描述飞行器的运动就需要12个变量的组合。而且这已经不单是代数方程,而是微分方程了。
卫星上用三种可见光和四种红外光进行摄像,对每一个区域,可以获得七张遥感图象。利用多通道的遥感图可以获取尽可能多的地面信息,因为各种地貌、作物和气象特征可能对不同波段的光敏感。而在实用上应该寻找每一个地方的主因素,成为一张实用的图象。每一个象素上有七个数据,形成一个多元的变量数组,在其中合成并求取主因素的问题,就与线性代数中要讨论的特征值问题有关。
在全国设立几十万个观察点,把每一点的经度、纬度和高度三个坐标建立起来。现在对于经度纬度的测量精度要求,已经提高到了若干厘米,对于高度的精度要求更高。在一些边远地区,对于一些特征点的测量,要耗费很大的人力物力。例如对珠穆朗玛峰顶高度的测量,要经过多种方法,取得多种数据,并且用最小二乘法进行误差的处理。
三、行阶梯法解线性方程
1、线性方程的Matlab表示方法
由n个变量组成的m个联立线性代数方程组:
用MATLAB语言表示为:
n是未知数个数,m是独立方程的个数。当mn时,方程组无解,称为超定方程;当m=n时,方程组有唯一解,称为适定方程;所以不能简单地看形式上的m和n,还必须剔除其中非独立方程的虚假成分。将要讨论的行阶梯形式、行列式和“秩”等概念,很大程度上就是为了找到独立方程的数目。
(2) 解线性方程组及在matlab中的显示
作图的matlab代码:
subplot(2,2,1)&%作左上角图,画方程组(a)
ezplot('x1-2*x2+1')&%画(a)中的x1-2*x2+1=0
ezplot('-x1+3*x2-3')
subplot(2,2,2)&%作右上角图,画方程组(b)
ezplot('x1-2*x2+1')
ezplot('-x1+2*x2-3')
subplot(2,2,3)&%作左下角图,画方程组(c)
ezplot('x1-2*x2+1')
ezplot('-x1+2*x2-1')
subplot(2,2,4)&%作右下角图,画方程组(d)
ezplot('x1+x2-1')
ezplot('x1-x2-3')
ezplot('-x1+2*x2+3')
使用参考:
四个方程组在matlab中的作图:
2、初等行变换
将系数矩阵A和B组成增广矩阵:
对增广矩阵的行作以下三种运算不会改变方程组的解,这三种运算组成了矩阵的初等行变换:
(1) 行交换:将增广矩阵的第 i ,
j 两行互换位置。MATLAB语句:c([i,j],:) = c([j,i],:)
(2) 行乘数:将增广矩阵的第 i
行乘以常数 k 。MATLAB语句:c(i,:) = k*c(i,:)
(3) 行相加:将增广矩阵的第 i
行乘以常数 k,加到第 j 行。MATLAB语句:c(j,:) = c(j,:) + k*c(i,:)
3、行阶梯矩阵的生成(高斯消元过程)
行阶梯矩阵、简化行阶梯矩阵
如果线性方程组的左端系数具有以下三个特点:
所有非零行都处在全零行的上方;
各行的第一个非零元素的列号比其上方所有各行的第一非零元素的列号都要大;
所有的第一非零元素所在的列中,其下方的所有元素均为零;
这样的矩阵称为行阶梯矩阵(或上三角矩阵),如矩阵C1:
如果行阶梯矩阵还满足以下两个额外特点,则称之为简化行阶梯矩阵,如下图的矩阵C2:
1)&各行的第一个非零元素是所在列中唯一的非零元素
2)&各行的第一个非零元素都等于1
高斯消元过程、实例、matlab消元
步骤1:把主对角线下方第一列元素全变为零。在矩阵的各行中,选择第1列元素的绝对值最大的行,通过行交换把它放到第1行(这样做主要是为了提高计算精度,如果不考虑精度,只要第1行第1列元素不为零,可以跳过这个环节)。以第1行为基准,依次把第2行至第n行的第1列的元素消为零。
步骤2:在2~n行中,选择第2列元素的绝对值最大的行,通过行交换把它放到第2行。以第2行为基准行,依次把第3行至第n行的第2列的元素消为零。
步骤3: 做法同前面的步骤
步骤n-1:做法同前面的步骤
实例:用行阶梯及回代法求解以下方程组(方程组对应的增广矩阵已给出):
matlab消元程序:
function&[B]=gauss(A,i,j,q)
%&---------------------------------
%&A为输入矩阵,B为变换后的输出矩阵
%&i为基准行的行号
%&j为待变换行的行号
%&q为基准元的列号,即A(i,q)为基准元,A(j,q)为待消元
x&=&A(i,:);&y=A(j,:);&&&&&&%&取出A的第i,j两行命名为x,y,
z&=&y&-&y(q)/x(q)*x;&&&&%&实现(6.2.5)式的运算
A(j,:)=z;&&&&&&&%&把结果赋值给A第j行,
B=A;&&&&&&&&&%&将A作为输出变元B
matlab中的消元过程如下:
&&&&&1&&&&&4&&&&&7&&&&&1
&&&&&8&&&&&5&&&&&2&&&&&3
&&&&&3&&&&&6&&&&-2&&&&&5
&&&B=gauss(C,1,2,1)&%以第1行为基准行,使第2行的第1列元素变为0
&&&&&1&&&&&4&&&&&7&&&&&1
&&&&&0&&&-27&&&-54&&&&-5
&&&&&3&&&&&6&&&&-2&&&&&5
&&&B=gauss(B,1,3,1)&%以第1行为基准行,使第3行的第1列元素变为0
&&&&&1&&&&&4&&&&&7&&&&&1
&&&&&0&&&-27&&&-54&&&&-5
&&&&&0&&&&-6&&&-23&&&&&2
&&&B=gauss(B,2,3,2)&%以第2行为基准行,使第3行的第2列元素变为0,此时,生成了行阶梯矩阵
&&&&1.0000&&&&4.0000&&&&7.0000&&&&1.0000
&&&&&&&&&0&&-27.0000&&-54.0000&&&-5.0000
&&&&&&&&&0&&&&&&&&&0&&-11.0000&&&&3.1111
&&&B=gauss(B,3,2,3)&%以第3行为基准行,使第2行的第3列元素变为0
&&&&1.0000&&&&4.0000&&&&7.0000&&&&1.0000
&&&&&&&&&0&&-27.0000&&&&&&&&&0&&-20.2727
&&&&&&&&&0&&&&&&&&&0&&-11.0000&&&&3.1111
&&&B=gauss(B,3,1,3)&%以第3行为基准行,使第1行的第3列元素变为0
&&&&1.0000&&&&4.0000&&&&&&&&&0&&&&2.9798
&&&&&&&&&0&&-27.0000&&&&&&&&&0&&-20.2727
&&&&&&&&&0&&&&&&&&&0&&-11.0000&&&&3.1111
&&&B=gauss(B,2,1,2)&%以第2行为基准行,使第1行的第2列元素变为0,此时,A阵变成了对角矩阵
&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&-0.0236
&&&&&&&&&0&&-27.0000&&&&&&&&&0&&-20.2727
&&&&&&&&&0&&&&&&&&&0&&-11.0000&&&&3.1111
&&&B(2,:)=-1/27*B(2,:)&%第2行除以对角项
&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&-0.0236
&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&&0.7508
&&&&&&&&&0&&&&&&&&&0&&-11.0000&&&&3.1111
&&&B(3,:)=-1/11*B(3,:)&%第3行除以对角项,此时,生成了简化行阶梯矩阵
&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&-0.0236
&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&&0.7508
&&&&&&&&&0&&&&&&&&&0&&&&1.0000&&&-0.2828
4、MATLAB中的行阶梯生成函数
MATLAB已经把“简化行阶梯形式(reduced row echelon
form)”的计算过程集成为一个子程序rref。它的输入变元可以是线性方程组的系数矩阵,也可以是其增广矩阵,输入U=rref([A,b]),输出结果就是简化行阶梯矩阵。
例:用MATLAB中的rref求解3(2)中的方程组:
&&&A=[1,4,7;&8,5,2;&3,6,-2];&&b=[1;&3;&5];&&C=[A,&b];&&U=rref(C)
&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&-0.0236
&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&&0.7508
&&&&&&&&&0&&&&&&&&&0&&&&1.0000&&&-0.2828
解得:x1=-0.0236,&&
x2=0.7508,&& x3=-0.2828
5、行阶梯法解欠定方程组
上面讨论的是方程数m与变量数n相等的情况。普遍情况下,m假象,因为有的方程是相依的,有效方程数也许小于m。要看清它究竟是什么类型,应该看行阶梯形式的结果,即有效行的数目,有效行的个数也叫矩阵的“秩”。对于一个矩阵,尽管因变换的次序不同,但“秩”是唯一的。
对增广矩阵C=[A,
b]进行行阶梯变换,得到的行阶梯矩阵U的下方可能有全零出现。行阶梯形式为:
其中,U为方程中左端的系数矩阵,d为方程右端的常数项。当U中某行各变量系数全为零时,d中的对应行也必须为零,否则就构成了等式左右不相等的矛盾方程。因此,矩阵A和增广矩阵[A,b]的行阶梯形式U(或简化行阶梯矩阵)应当有同样的全零行,也就是两者有同样的秩,这是方程组有解的必要条件。
原来的m行中只剩下r个非全零行,意味着m个方程中只有r个有效,也就是它的秩为r,m-r个全零行反映了原方程组中有m-r个是相依方程,最后U中有效的部分是rn矩阵,就是r个方程和n个未知数。因为r自由变量,也可把它们称为任意常数。
例:解下列方程组
输入系数矩阵A和常数矩阵b,求增广矩阵的简化行阶梯形式,MATLAB代码如下:
A=[3,-4,3,2,-1;0,-6,0,-3,-3;4,-3,4,2,-2;1,1,1,0,-1;-2,6,-2,1,3];
b=[2;-3;2;0;1];
B=[A,b]&%增广矩阵
[U0,V0I]=rref(B)&%U0存放增广矩阵的简化行阶梯形式,V0I存放各行中第一个非零元素的列号
U=U0(1:5,1:5),d=U0(:,6)&%从U0中取出系数矩阵的简化行阶梯形式放入U中,常数部分放到d中
运行过程如下:
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1&&&&&2
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2&&&&&2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1&&&&&0
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3&&&&&1
&&&&&1&&&&&0&&&&&1&&&&&0&&&&-1&&&&&0
&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1&&&&&1&&&&&1
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&1&&&&&2&&&&&4
&&&&&1&&&&&0&&&&&1&&&&&0&&&&-1
&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1&&&&&1
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0
从U0可知,下方有两个全零行,说明原方程中有两个方程是相依的,只有三个独立方程,此时各行首非零元素不在对主角线上,列号分别为1,2,4。我们应当把x1,
x2, x4看作待求的变量,而把其余的两个变量x3和x5看作自由变量。
把U恢复成方程形式并移项,使左端只包含待求变量,把x3和x5移到等式右边:
如果要给出一个具体解,通常取自由变量x3和x5为零,这样得出的解是x1=x2=x3=x5=0,
x4=-1。但这样来表示方程的解容易造成误会,以为方程组只有一个解。所以比较严格的表示方法是取自由变量x3和x5为c1和c2:
x3=c1,& x5=c2,&
x1=-c1+c2,& x2=0,& x4=-c2+1
这样,选择不同的c1和c2,就可以得出不同的解,所以其解有无数组。由于它包含两个自由变量,因此在两个自由度上都可以在(-∞,+∞)范围内变化,从几何上说,它的解占据了一个两维空间(平面)。
解的最后形式:
5、应用实例
(1) 平板稳态温度的计算
研究一个平板的热传导问题,设该平板的周边温度已经知道(见下图),现在要确定板中间4个点a,b,c,d处的温度。假定其热传导过程已经达到稳态,因此在均匀的网格点上,各点的温度是其上下左右4个点的温度的平均值。
根据题意列出方程为:
移项整理为标准的矩阵形式为:
输入MATLAB程度计算为:
&&&A=[1,-0.25,-0.25,0;-0.25,1,0,-0.25;-0.25,0,1,-0.25;0,-0.25,-0.25,1]
&&&&1.0000&&&-0.2500&&&-0.2500&&&&&&&&&0
&&&-0.2500&&&&1.0000&&&&&&&&&0&&&-0.2500
&&&-0.2500&&&&&&&&&0&&&&1.0000&&&-0.2500
&&&&&&&&&0&&&-0.2500&&&-0.2500&&&&1.0000
&&&b=[7.5;15;10;17.5]
&&&&7.5000
&&&15.0000
&&&10.0000
&&&17.5000
&&&U=rref([A,b])
&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&&&&&&&0&&&20.0000
&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&27.5000
&&&&&&&&&0&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&22.5000
&&&&&&&&&0&&&&&&&&&0&&&&&&&&&0&&&&1.0000&&&30.0000
把它“翻译”为方程,即有:xa=20℃,xb=27.5℃,xc=22.5℃,xd=30℃
(2) 化学方程式配平
建立一个向量方程组,每个方程分别描述一种原子在反应前后的数目。在上面的方程中,有碳、氢、氧三种元素需要配平,构成了三个方程。而有四种物质,其数量用四个变量x1,x2,x3,x4来表示。将每种物质中的元素原子数按碳、氢、氧顺序排列,可以写出:
要使方程配平,x1,x2,x3,x4必须满足:
写成矩阵方程:
对A进行行阶梯变换:
&&&A=[3,0,-1,0;8,0,0,-2;0,2,-2,-1]
&&&&&3&&&&&0&&&&-1&&&&&0
&&&&&8&&&&&0&&&&&0&&&&-2
&&&&&0&&&&&2&&&&-2&&&&-1
&&&U=rref(A)
&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&-0.2500
&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&-1.2500
&&&&&&&&&0&&&&&&&&&0&&&&1.0000&&&-0.7500
要注意这四个列对应于四个变量的系数,所以这三行系数对应的方程是:
x1&&&&&&&&&
-0.2500x4&= 0
-1.2500x4&= 0
-0.7500x4&= 0
即x4是自由变量。因为化学家们喜欢把方程的系数取为最小整数,此处可取x4=4,则x1,x2,x3均有整数解,x1=1, x2=5,
对于比较复杂的反应过程,为了便于得到最小整数解,在解化学配平的线性方程组时,应该在MATLAB中先规定取有理分式格式,即先输入format
rat,这样就很容易看出应令x4=4。结果为:
&&&format&rat
&&&U=rref(A)
&&&&&&&1&&&&&&&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&-1/4&&&&&
&&&&&&&0&&&&&&&&&&&&&1&&&&&&&&&&&&&0&&&&&&&&&&&&-5/4&&&&&
&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&&1&&&&&&&&&&&&-3/4&&&&&
(3) 交通流量分析
某城市有两组单行道,构成了一个包含四个节点A,B,C,D的十字路口,如下图所示。在交通繁忙时段的汽车从外部进出此十字路口的流量(每小时的车流数)标于图上。现要求计算每两个节点之间路段上的交通流量x1,
x2, x3, x4。
在每个节点上,进入和离开的车数应该相等,这就决定了四个节点的流通方程:
节点A:&x1+450=x2+610
节点B:&x2+520=x3+480
节点C:&x3+390=x4+600
节点D:&x4+640=x2+310
将这组方程进行整理,写成矩阵形式:
用消元法或直接调用U=rref([A,b]),得出精简行阶梯形式为:
&&&A=[1,-1,0,0;0,1,-1,0;0,0,1,-1;-1,0,0,1]
&&&&&&&1&&&&&&&&&&&&-1&&&&&&&&&&&&&0&&&&&&&&&&&&&0&&&&&&
&&&&&&&0&&&&&&&&&&&&&1&&&&&&&&&&&&-1&&&&&&&&&&&&&0&&&&&&
&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&&1&&&&&&&&&&&&-1&&&&&&
&&&&&&-1&&&&&&&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&&1&&&&&&
&&&b=[160;-40;210;-330]
&&&&&160&&&&&&
&&&&&-40&&&&&&
&&&&&210&&&&&&
&&&&-330&&&&&&
&&&U=rref([A,b])
&&&&&&&1&&&&&&&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&-1&&&&&&&&&&&330&&&&&&
&&&&&&&0&&&&&&&&&&&&&1&&&&&&&&&&&&&0&&&&&&&&&&&&-1&&&&&&&&&&&170&&&&&&
&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&&1&&&&&&&&&&&&-1&&&&&&&&&&&210&&&&&&
&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&&0&&&&&&&&&&&&&0&&&&&&
矩阵U中第1至4列代表变量x1,x2,x3和x4的系数,第5列则是等式右边的常数项。把第4列移到等式右边,可以恢复为方程,其结果为:
x1 = x4 +330
x2 = x4 +170
x3 = x4 + 210
由于最后一行为全零,说明四个方程中实际上只有三个有效方程。方程数比未知数的数目少,即没有给出足够的信息来唯一地确定x1,
x3和x4,其原因也不难从物理上理解。题目给出的只是进入和离开这个十字路口的流量,如果有些车沿着这四方的单行道绕圈,并不会影响总的输入输出流量,但可以全面增加四条路上的流量。所以x4被称为自由变量。实际上它的取值也不是完全自由的,因为规定了这些路段都是单行道,x1,x2,x3和x4都不能取负值。所以要准确了解这里的交通流量情况,还应该在x1,x2,x3和x4中,再检测一个变量。
一、用矩阵运算法解线性方程组
1、矩阵运算规则及MATLAB实例
(1)& 矩阵加(减)法:即两矩阵对应元素相加减,要求两矩阵的阶数必须相同。
(2)& 矩阵乘法:mp阶矩阵A与pn阶矩阵B的乘积C是一个mn阶的矩阵。元素C(i, j)的值为A矩阵的第i行和B矩阵的第j列对应元素乘积的和。
矩阵乘法一般不满足交换律,即:A*B&≠&B*A
&&&A=[1&2&3]
&&&&&1&&&&&2&&&&&3
&&&B=[4;&5;&6]
&&&A*B&%结果是一个标量
&&&B*A&%结果是一个矩阵
&&&&&4&&&&&8&&&&12
&&&&&5&&&&10&&&&15
&&&&&6&&&&12&&&&18
(3)& 矩阵求逆:矩阵的逆阵V定义为满足V*A = I
(I为与A同阶的单位矩阵)。只有方阵才可以求逆,而且此方阵的行列式必须不为零,det(A) ≠
0。如果det(A)&= 0,求逆时就会出现无穷大,此时的矩阵称为奇异的。
&&&&&4&&&&&8&&&&12
&&&&&5&&&&10&&&&15
&&&&&6&&&&12&&&&18
&&&&&4&&&&&8&&&&12
&&&&&6&&&&10&&&&15
&&&&&7&&&&12&&&&&4
&&&det(A)&%矩阵A的行列式为零
&&&det(B)&%矩阵B的行列式不为零
&&&inv(A)&%对矩阵A求逆时出现无穷大(Inf)
Warning:&Matrix&is&singular&to&working&precision.
&&&Inf&&&Inf&&&Inf
&&&Inf&&&Inf&&&Inf
&&&Inf&&&Inf&&&Inf
&&&inv(B)&%对矩阵B求逆正常
&&&-1.2500&&&&1.0000&&&&&&&&&0
&&&&0.7232&&&-0.6071&&&&0.1071
&&&&0.0179&&&&0.0714&&&-0.0714
(4)& 矩阵转置:矩阵的行列互换后构成转置矩阵。如果A是mn阶的,则AT是nm阶的。
&&&&&4&&&&&8&&&&12
&&&&&5&&&&10&&&&15
&&&&&4&&&&&5
&&&&&8&&&&10
&&&&12&&&&15
(5)& 矩阵分块:矩阵A可以划分成许多小矩阵。
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&A1=A(1:3,&1:3)
&&&&&3&&&&-4&&&&&3
&&&&&0&&&&-6&&&&&0
&&&&&4&&&&-3&&&&&4
&&&A2=A(1:3,&4:5)
&&&&&2&&&&-1
&&&&-3&&&&-3
&&&&&2&&&&-2
&&&A3=A(4,&1:4)
&&&&&1&&&&&1&&&&&1&&&&&0
&&&A4=A(4,&5)
(5)& 矩阵分解为向量:把矩阵沿行向或列向分解为单列或单行向量,常见的是分解为列向量。
行向量左乘列向量:要求两向量的长度必须一致,结果为一个标量。得出的是向量各分量的平方和。如果这些分量是正交的,则得出的是向量的长度平方。它的平方根就是向量长度,也称为向量的范数或2范数。
行向量左乘列向量得到的是,在工程中具有这样计算形式的问题很多,比如用它计算两个向量x和y之间的相关性。
列向量左乘行向量:如果列向量的长度为n,行向量的长度为m,则相乘会得出一个nm的矩阵,这种方法常常用来生成和计算一些复杂的大矩阵。
(8)& 矩阵乘法和幂次:A^2 = A*A,& A^n
=& A*A*...*A。根据矩阵相乘内阶数必须相等,只有方阵才能乘方和幂次。
2、初等变换乘子矩阵的生成及MATLAB实例
本节通过将原矩阵左乘变换的单位矩阵实现矩阵的初等行变换:
(1) 行交换:将矩阵A的第 i , j 两行互换位置。
%&行交换:交换矩阵A的第1行和第3行
%&步骤1:得到一个5阶单位阵:E=eye(5)
%&步骤2:交换E的第1行和第3行得到矩阵E1
%&步骤3:矩阵A左乘矩阵E1得到交换后的矩阵
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3
&&&&&0&&&&&0&&&&&1&&&&&0&&&&&0
&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&1&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&1
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3
写成函数E1gen(A,i,j):
function&E=E1gen(A,i,j)
n=size(A);&%求矩阵A的行数和列数
m=min(n);&%获取矩阵行数和列数中的最小值
E=eye(m);&%产生单位对角阵
E(i,i)=0;&E(j,j)=0;&E(i,j)=1;&E(j,i)=1;
(2) 行乘数:将矩阵A的第 i 行乘以 k 。
%&行乘数:将矩阵A的第4行乘以5
%&步骤1:得到一个5阶单位阵:E=eye(5)
%&步骤2:将单位阵E中的元素E(4,4)乘以5得到矩阵E2
%&步骤3:矩阵A左乘矩阵E2得到变换后的矩阵
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3
&&&&&1&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&1&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&5&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&1
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&5&&&&&5&&&&&5&&&&&0&&&&-5
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3
写成函数E2gen(A,i,k):
function&E=E2gen(A,i,k)
n=size(A);
m=min(n);%获取矩阵行数和列数中的最小值
E=eye(m);%产生单位对角阵
(3) 行相加:将矩阵的第 i 行乘以 k,加到第 j 行。
%&行乘数加到另一行:将矩阵A的第4行乘以2加到第5行
%&步骤1:得到一个5阶单位阵:E=eye(5)
%&步骤2:将单位阵E中的元素E(5,4)乘以2得到矩阵E3
%&步骤3:矩阵A左乘矩阵E3得到变换后的矩阵
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3
&&&&&1&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&1&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&2&&&&&1
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&0&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&&&0&&&&&8&&&&&0&&&&&1&&&&&1
写成函数E3gen(A,i,j,k):
function&E=E3gen(A,i,j,k)
n=size(A);
m=min(n);%获取矩阵行数和列数中的最小值
E=eye(m);%产生单位对角阵
要消去下列矩阵的A(2,1),求乘子矩阵E3
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&6&&&&-6&&&&&0&&&&-3&&&&-3
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3
在第二行加以第一行乘 -A(2,1)/A(1,1) = -2,故令E3 = E3gen(A,1,2,-2)
&&&E3=E3gen(A,1,2,-2)
&&&&&1&&&&&0&&&&&0&&&&&0&&&&&0
&&&&-2&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&1&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&1
&&&&&3&&&&-4&&&&&3&&&&&2&&&&-1
&&&&&0&&&&&2&&&&-6&&&&-7&&&&-1
&&&&&4&&&&-3&&&&&4&&&&&2&&&&-2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&-1
&&&&-2&&&&&6&&&&-2&&&&&1&&&&&3
综上可知:
1、行阶梯生成等价于矩阵左乘
因此,整个行阶梯形式U的生成过程,可以看作把原矩阵左乘以一系列的初等变换矩阵E1和E3。把这些初等矩阵的连乘积写成EX,则有:&U=EX*A,设其逆为L:
从而有 L*U=A&
就是说,A可以分解为一个准下三角矩阵L和一个上三角(即行阶梯)矩阵U的乘积。MATLAB提供了三角分解的函数lu,它的调用方法是:[L,U]=lu(A)
2、lu分解是求行阶梯的一个方法
用lu函数求出的U实际上就是A的行阶梯形式(不是简化行阶梯形式)。所以,求简化行阶梯形式用rref函数,而求行阶梯形式可以用lu
函数。不过,它和我们用消元运算所得U的数据不一定相同,尽管得出的阶次和阶梯形状相同。但因为行阶梯形式可以有无数种,用不同步骤算出的结果也不同。只有变成简化行阶梯形式,才能进行比较,看它是不是惟一的。
(1) 行列式的几何意义:
行列式的几何意义是面积或体积,它的用途很单一,就是判断奇异性,连正负号都不必关心。
(2) 行列式的计算方法:
计算行列式的最好方法还是行阶梯法,可以利用lu分解
&&&&&&&&&&&&&&&
[L,U] = lu(A)
把A分解为一个准下三角矩阵L和一个上三角矩阵U的乘积。因为det(L) =
1,所以U和A的行列式相等。&&
&&&&&&&&&&&&&&
det(A) = det(U)
而三角矩阵U的det(U)很好求。只要把U的主对角线元素连乘就可得到它的行列式。
&&&&10&&&&&8&&&&&6&&&&&4&&&&&1
&&&&&2&&&&&5&&&&&8&&&&&9&&&&&4
&&&&&6&&&&&0&&&&&9&&&&&9&&&&&8
&&&&&5&&&&&8&&&&&7&&&&&4&&&&&0
&&&&&9&&&&&4&&&&&2&&&&&9&&&&&1
&&&[L&U]=lu(A)
&&&&1.0000&&&&&&&&&&&
0&&&&&&&&&&
0&&&&&&&&&&
0&&&&&&&&&&&
&&&&0.2000&&&-0.7083&&&&1.0000&&&&&&&&&&
0&&&&&&&&&&&
&&&&0.6000&&&&1.0000&&&&&&&&&&&
0&&&&&&&&&&
0&&&&&&&&&&&
&&&&0.5000&&&-0.8333&&&&0.8000&&&-0.2953&&&&1.0000
&&&&0.9000&&&&0.6667&&&-0.6588&&&&1.0000&&&&&&&&&&&
&&&10.0000&&&&8.0000&&&&
6.0000&&&&
4.0000&&&&1.0000
&&&&&&&&&&&
0&&&-4.8000&&&&
5.4000&&&&
6.6000&&&&7.4000
&&&&&&&&&&&
0&&&&&&&&&&&
0&&&10.6250&&&
12.8750&&&&9.0417
&&&&&&&&&&&
0&&&&&&&&&&&
0&&&&&&&&&&&
9.4824&&&&1.1235
&&&&&&&&&&&
0&&&&&&&&&&&
0&&&&&&&&&&&
0&&&&&&&&&&&&
0&&&-1.2349
&&&du=diag(U)
&&&10.0000
&&&-4.8000
&&&10.6250
&&&&9.4824
&&&-1.2349
&&&result=prod(du)
用det求A的行列式值得到相同的结果:
&&&&&&&&5972
4、矩阵的秩和矩阵求逆
矩阵的秩:
按定义,矩阵的秩是矩阵A中行列式不等于零的最高阶子式的阶次。是用以衡量联立方程中有效方程数目的指数。
按照定义来计算矩阵的秩,可能遇到的问题也是子矩阵的数量很大,每个矩阵的行列式计算又非常麻烦,其计算量也将是不可接受的天文数字。
计算矩阵的秩的最好方法是行阶梯法,行阶梯化简后非全为零的行数就是该矩阵的秩。用MATLAB函数r=rank(A)可以检验A的秩,rank函数对A是否是方阵没有要求,即可以有m≠n。
矩阵求逆:
(1) 对于nn方阵A,当r=n时,称A是满秩的,若r
(2) 矩阵求逆的最简单方法也是行阶梯化简,其方法是设定一个由A和I组成的增广矩阵C = [A,I],求C的简化行阶梯形式UC =
rref([A,I]),得出UC = [I,V]。V就显示出这个逆矩阵的内容。
求逆实例:
&&&A=[3&0&3&-6;5&-1&1&-5;-3&1&4&-9;1&-3&4&-4]
&&&&&3&&&&&0&&&&&3&&&&-6
&&&&&5&&&&-1&&&&&1&&&&-5
&&&&-3&&&&&1&&&&&4&&&&-9
&&&&&1&&&&-3&&&&&4&&&&-4
&&&C=[A,eye(4)]
&&&&&3&&&&&0&&&&&3&&&&-6&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&5&&&&-1&&&&&1&&&&-5&&&&&0&&&&&1&&&&&0&&&&&0
&&&&-3&&&&&1&&&&&4&&&&-9&&&&&0&&&&&0&&&&&1&&&&&0
&&&&&1&&&&-3&&&&&4&&&&-4&&&&&0&&&&&0&&&&&0&&&&&1
&&&UC=rref(C)&%UC右边四列就是矩阵A的逆
&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&&&&&&&0&&&&0.2323&&&-0.0101&&&-0.1313&&&-0.0404
&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&&&&&&&0&&&&0.5354&&&-0.3131&&&-0.0707&&&-0.2525
&&&&&&&&&0&&&&&&&&&0&&&&1.0000&&&&&&&&&0&&&&0.5859&&&-0.4747&&&-0.1717&&&&0.1010
&&&&&&&&&0&&&&&&&&&0&&&&&&&&&0&&&&1.0000&&&&0.2424&&&-0.2424&&&-0.1515&&&&0.0303
&&&V=UC(:,5:8)
&&&&0.2323&&&-0.0101&&&-0.1313&&&-0.0404
&&&&0.5354&&&-0.3131&&&-0.0707&&&-0.2525
&&&&0.5859&&&-0.4747&&&-0.1717&&&&0.1010
&&&&0.2424&&&-0.2424&&&-0.1515&&&&0.0303
矩阵求逆命令:V=inv(A)
5、条件数—衡量奇异程度的量
在用数值方法计算矩阵的逆时,由于计算中的误差,人们不大可能得到理想的零合理想的全零行,所以矩阵是否奇异,并不是那么绝对的。
(2) 为了评价矩阵接近‘奇异’的程度,采用了‘条件数’(Condition
Number)作为常用的衡量指标。它永远大于1。其数值愈接近于1,计算误差愈小。
MATLAB中,条件数用cond(A)计算,它达到10的4次方以上时,求逆的误差就可能相当可观。像现在,条件数达到10的16次方(注:条件数是逆条件数RCOND的倒数),结果是根本不能用的。
6、用矩阵‘除法’解线性方程
(1) 如果m = n,则线性代数方程Ax = b中的A是方阵,设det(A)≠0,则它的逆阵存在。将上式左右同乘以inv(A)
,由于inv(A)*A = I,得到
X = inv(A)*b (1)
MATLAB创立了矩阵除法的概念,因为 inv(A)相当于将A放到分母上去,所以可以把上式写成
‘\’就称为左除,因为inv(A)是乘在b的左方。
(2) 左除’\’解线性方程的扩展
左除‘\’的功能远远超过了矩阵求逆函数inv,inv(A)函数要求A必须是方阵,所以(1)式只能用来解‘适定’方程,而(2)式并不要求A为方阵,在A是mn阶且m &
n(欠定)时,它只要求A与b的行数相等且A的秩为m。所以(2)式也可以用来解欠定方程,在下例中可以看出。此外,运算符‘\’还能用来解超定方程。
例:左除’\’解欠定方程
&&&A=[3,4,3,2,1;0,6,0,3,3;4,3,4,2,2;1,1,1,0,1;2,6,2,1,3]
&&&&&3&&&&&4&&&&&3&&&&&2&&&&&1
&&&&&0&&&&&6&&&&&0&&&&&3&&&&&3
&&&&&4&&&&&3&&&&&4&&&&&2&&&&&2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&&1
&&&&&2&&&&&6&&&&&2&&&&&1&&&&&3
&&&b=[2;3;2;0;1]
Warning:&Matrix&is&singular&to&working&precision.
&&&&&&&NaN
&&&&&&&NaN
&&&&&&&Inf
&&&&1.0000
&&&&0.0000
得到x=inf,无解。改用行阶梯方法找有效行。左除要求的是系数矩阵的行数与秩相同
&&&&&3&&&&&4&&&&&3&&&&&2&&&&&1
&&&&&0&&&&&6&&&&&0&&&&&3&&&&&3
&&&&&4&&&&&3&&&&&4&&&&&2&&&&&2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&&1
&&&&&2&&&&&6&&&&&2&&&&&1&&&&&3
&&&B=[A,b]
&&&&&3&&&&&4&&&&&3&&&&&2&&&&&1&&&&&2
&&&&&0&&&&&6&&&&&0&&&&&3&&&&&3&&&&&3
&&&&&4&&&&&3&&&&&4&&&&&2&&&&&2&&&&&2
&&&&&1&&&&&1&&&&&1&&&&&0&&&&&1&&&&&0
&&&&&2&&&&&6&&&&&2&&&&&1&&&&&3&&&&&1
&&&r=rank(B)
&&&[UB,ip]=rref(B)
&&&&&1&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1&&&&&0&&&&&1
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&1&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&1&&&&&2&&&&&4&&&&&5
&&&U0=UB(1:r,1:5)
&&&&&1&&&&&0&&&&&1&&&&&0&&&&&0
&&&&&0&&&&&1&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0&&&&&1
&&&d=UB(1:4,6)
其中,x是此欠定方程的一个特解。
一、用向量空间解方程组
1、向量和向量空间
二维空间R2中的向量用两个沿列向的元素表示。
向量u,v在二维空间的表示:
(2)&&二维向量张成的空间
平面上的任何一点[w1;w2]是不是一定能用u和v的线性组合来实现?即是不是一定能找到一组常数[c1,c2],使得
c1,c2取所有可能的值,得到的w的集合就是u和v张成的子空间,在所给的u和v下,它是一个平面。
若u和v两个向量的各元素成简单的比例关系,合成的向量只能在一根直线上,不可能张成整个二维平面。这种情况下,称这两个向量u和v是线性相关的。&
(3)&&三维空间中的向量
若v1,v2和v3都是三维空间的列向量。可以用空间坐标中的三个点,或从坐标原点引向这三点的箭头来表示。用矩阵代数表示如下:
如果三个基本向量之间线性无关,那么它们的线性组合可以覆盖(张成)整个三维空间。如果三个向量共面,即相关,就不能张成三维空间。判断三个向量的线性相关性,可用行列式。
(4) 三维空间向量的相关性
det(A)≠0& 不相关
行列式的几何意义:在二维是两个向量组成的平行四边形面积,在三维是三个向量组成的平行六面体的体积。
n维向量的相关性
在进入三维以上的空间时,已经没有可与面积、体积直接相当的概念可用了,所以采用了秩的概念。如果A的行列式为零,也就是它的秩r小于n时,说明这n个向量是线性相关的。
秩的概念也概括了面积存在(r=2)和体积存在(r=3)的意义,因此,它是更高度的抽象。
(6) 向量空间和基向量
若r个向量是线性无关的,则它们的线性组合的全体V就构成了r维空间Rr。如果它不是空集,则V称为向量空间。生成V的r个线性无关的向量v称为基向量或基(Basis)。&
& 当r=n时,给定的n个向量就是一组基。如果r
例1:求四个五维向量的子空间
这四个向量组成的矩阵如下,对它进行行阶梯简化:
&&&A=[4,-5,-4,-1;0,-3,0,1;-2,1,2,0;-5,4,5,3;-1,4,1,-1]
[U0,ip]=rref(A)
&&&&&4&&&&-5&&&&-4&&&&-1
&&&&&0&&&&-3&&&&&0&&&&&1
&&&&-2&&&&&1&&&&&2&&&&&0
&&&&-5&&&&&4&&&&&5&&&&&3
&&&&-1&&&&&4&&&&&1&&&&-1
&&&&&1&&&&&0&&&&-1&&&&&0
&&&&&0&&&&&1&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&1
&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&0&&&&&0&&&&&0&&&&&0
&&&&&1&&&&&2&&&&&4
ip=1,2,4,其三个枢轴列对应的就是三个线性无关的列向量。
例2:w是否在v1,v2,v3的空间内
w是否能由v1,v2,v3的线性组合构成的问题,取决于线性方程组 v.c=w 解的存在性。
v1=[7;-4;-2;9];&
v2=[-4;5;-1;-7];&
v3=[9;4;4;-7];&
w=[-9;7;1;-4];&
v=[v1,v2,v3];
c=v\w&&&&&%&把基向量组成矩阵v求解
也可以按det(v)是否为零进行判别。
(7) 向量的内积和正交性
两个m维向量的内积可以写成:
这是一个标量。向量x与自己求内积
得到的是其各分量的平方和,其平方根就等于向量的长度(或模、或范数norm)。
(8) 内积的几何意义
在平面情况,两向量的内积除以它们的长度是它们夹角的余弦:
例3:基向量长度规一化和夹角
求以上例2中的单位基向量v01,v02,v03,并分别求它们之间的夹角。
v10=v1/norm(v1)
v20=v2/norm(v2)&
v30=v3/norm(v1)
theta12=acos((v1'*v2)/(norm(v1)*norm(v2)))
theta13=acos((v1'*v3)/(norm(v1)*norm(v3)))
theta23=acos((v3'*v2)/(norm(v3)*norm(v2)))
(9)&正交基向量的生成
两向量x,y正交的条件是它们的内积为零。
给出向量求正交基常用施密特算法,ATLAST手册中给出了相应的程序gschmidt。调用时键入[Q,R]=gschmidt(v),Q就是单位正交基向量e。
MATLAB中不用施密特算法,而用更好的算法编成了正交分解子程序qr.m,它将v分解为Q和R两个矩阵的乘积。调用方法为:[Q,R]=qr(v)
,Q就是mm单位正交矩阵。
基向量正交化的schmidt公式:
得到qi(i&#,…,k)后,再把它们除以norm(qi),就可归一化为单位向量ek。
基向量正交化的gschmidt子程序:
function&[Q,R]=gschmidt(V)
[m,n]=size(V);&R=zeros(n);
R(1,1)=norm(V(:,1));
Q(:,1)=V(:,1)/R(1,1);
&&&&R(1:k-1,k)=Q(:,1:k-1)'*V(:,k);
&&&&Q(:,k)=V(:,k)-Q(:,1:k-1)*R(1:k-1,k);
&&&&R(k,k)=norm(Q(:,k));
&&&&Q(:,k)=Q(:,k)/R(k,k);
例4:对于例2的数据,求其规范化正交基向量e1,e2,…,en。
&&&V=[7,-4,9;-4,5,4;-2,-1,4;9,-7,-7]
[Q,R]=qr(V)&%&或&[Q,R]=gschmidt(V)&
e=Q(:,[1:3])
&&&&&7&&&&-4&&&&&9
&&&&-4&&&&&5&&&&&4
&&&&-2&&&&-1&&&&&4
&&&&&9&&&&-7&&&&-7
&&&-0.5715&&&-0.3164&&&-0.7473&&&-0.1217
&&&&0.3266&&&-0.6096&&&-0.1080&&&&0.7142
&&&&0.1633&&&&0.7144&&&-0.5022&&&&0.4591
&&&-0.7348&&&&0.1339&&&&0.4216&&&&0.5141
&&-12.2474&&&&8.8998&&&&1.9596
&&&&&&&&&0&&&-3.4341&&&-3.3662
&&&&&&&&&0&&&&&&&&&0&&-12.1173
&&&&&&&&&0&&&&&&&&&0&&&&&&&&&0
&&&-0.5715&&&-0.3164&&&-0.7473
&&&&0.3266&&&-0.6096&&&-0.1080
&&&&0.1633&&&&0.7144&&&-0.5022
&&&-0.7348&&&&0.1339&&&&0.4216
得到e=[e1 e2 e3]
二、线性变换及特征
1、平面上线性变换的几何意义
设x为二维平面上第一象限中的一个单位方块,其四个顶点的数据可写成:
&&&&&0&&&&&1&&&&&1&&&&&0
&&&&&0&&&&&0&&&&&1&&&&&1
把不同的A矩阵作用于此组数据,可以得到多种多样的结果yi=Ai*x。
可以看出,矩阵A1使原图对纵轴生成镜像,矩阵A2使原图在横轴方向膨胀,矩阵A3使原图在纵轴方向压缩,矩阵A4使原图向右方剪切变形,矩阵A5使原图沿反时针方向旋转tpi/6。分别计算出这五个矩阵的行列式和特征值:&
对二维空间(平面),行列式的几何意义实际上是两个向量所构成的平行四边形的面积。一个变换所造成的图形的面积变化,取决于该变换的行列式。A1,A4和A5的行列式绝对值都是1,所以它们不会使变换后图形的面积发生改变。而A2和A3的行列式分别为1.5和0.2。
2、二维矩阵特征值的几何意义
二维矩阵的特征值表示该变换在原图形的特征向量的方向上的放大量。例如矩阵A1在第一特征向量
的方向的特征值为λ1(1)
= -1,即横轴正方向的增益为-1,其结果是把原图中横轴正方向的部分变换到新图的负方向去了;A1在第二特征向量
的方向的特征值为λ1(2)=1,即纵轴正方向的增益为1,因而保持了新图和原图在纵轴方向尺度不变。
例2:斜体字的生成
&&&&&&&&&0&&&&0.5000&&&&0.5000&&&&6.0000&&&&6.0000&&&&5.5000&&&&5.5000&&&&&&&&&0
&&&&&&&&&0&&&&&&&&&0&&&&6.4200&&&&&&&&&0&&&&8.0000&&&&8.0000&&&&1.5800&&&&8.0000
表示英文大写空心字母N的各个节点
(1)用plot语句在子图1中画出其形状;
&&&&1&&&&0.25
&&&&0&&&&1
作为变换矩阵对x进行变换,并在子图2中画出其图形;
画图的要点是要在给定的数据右方,补上第一点的坐标,使画出的图形封闭。
x0&=&[0,0.5,0.5,6,6,5.5,5.5,0;0,0,6.42,0,8,8,1.58,8]
x&=&[x0,x0(:,1)]&%&把首顶点坐标补到末顶点后
A&=&[1,0.25;0,1]
subplot(1,2,1),&plot(x(1,:),x(2,:))
subplot(1,2,2),&plot(y(1,:),y(2,:))
画出的两个图形为:
平移运动不能用二维变换实现
刚体在平面上的运动要用两个平移和一个转动来描述,转动可以从上面的线性变换A5得到,但平移y=x+c却不是一个线性变换。因为:
(1)设ya = xa+c;yb = xb+c;则它们的和为
&&y = ya+yb = xa+xb+2c ≠
可见,它对加法不封闭;
(2)设ya = xa+c;将它乘以常数k,
&&y = kya = k(xa+c) = kxa+kc ≠
kxa+c = x+c,
可见,它对乘法也不封闭;就是说,这不符合线性变换的规则,x和y 不属于同一个向量空间,无法用矩阵乘法来实现平移变换y =
平面运动模型的齐次坐标系
把平面问题映射到高维的空间来建立方程,有可能把x和y由扩展了的向量空间来覆盖。把原来通过原点的平面沿垂直方向提高一个单位,与原平面保持平行,于是原来的x就用三维向量来表示为:
这样的坐标系称为齐次坐标系。
此时可以把平移矩阵写成:
因而平移运动y就可用x经线性变换实现了。
这个方法在研究刚体平面运动时非常有用。
对象若同时有旋转和平移,则可以分别列出旋转矩阵和平移矩阵。不过此时的旋转矩阵也要改为3&3维,这可以把上述A5中增加第三行和第三列,置A(3,3)=1,其余新增元素为零。
这就是既包括平移,又包括转动的平面齐次坐标系内的变换矩阵。
(4) 空间线性变换的几何意义
三维空间线性变换最直接的几何意义和应用价值可以从飞行器的三维转动坐标中得到解释。飞行器在空中可以围绕三个轴旋转。假如它在向北飞行,机头正对北方,则它围绕铅垂轴的旋转角称为偏航角(Yaw),它描述了飞机左右的偏转,用u表示;围绕翼展轴的旋转角称为倾斜角(Pitch),它描述了飞机俯仰姿态,用v表示;围绕机身轴的旋转角称为滚动角(Roll),用w表示;u,v和w三个变量统称为欧拉角,它们完全地描述了飞机的姿态。
例3:程序的实现方法
把飞行器的三维图像用N个顶点描述,写成一个3&N的数据矩阵G。用plot3命令时按顶点连线能绘制出飞行器的外观。例如以下程序即可画出一个最简单的飞行器立体图。
Gw=[-4,-3,0;4,-3,0;0,7,0;-4,-3,0]';&%&主翼的顶点坐标
Gt=[0,-3,0;0,-3,3;0,2,0;0,-3,0]';&%&尾翼的顶点坐标
G=[Gw,Gt]&%&整个飞行器外形的数据集
plot3(Gw(1,:),Gw(2,:),Gw(3,:),'r'),&hold&on
plot3(Gt(1,:),Gt(2,:),Gt(3,:),'g'),&axis&equal
围绕各个轴的旋转变换矩阵:
飞行器围绕各个轴的旋转的结果,表现为各个顶点坐标发生变化,也就是G的变化。只要把三种姿态的变换矩阵Y,P和R乘以图形数据矩阵G即可。其中
综合旋转的变换矩阵:
单独变化某个姿态角所生成的图形由G1
= Y*G,G2 = P*G,G3 = R*G算出,如果同时变化三个姿态角,则最后的图像数据成为Gf = Y*P*R*G =
Q*G。这里假定转动的次序为:先滚动R,再倾斜P,最后偏航Y,由于矩阵乘法不服从交换律,转动次序不同时结果也不同。
用MATLAB实现的程序如下:
&&&syms&u,w,v
Y=[cos(u),sin(u),0;-sin(u),cos(u),0;0,0,1]
R=[1,0,0;0,cos(w),-sin(w);0,sin(w),cos(w)]
P=[cos(v),0,-sin(v);0,1,0;sin(v),0,cos(v)]
[&&cos(u),&&sin(u),&&&&&&&0]
[&-sin(u),&&cos(u),&&&&&&&0]
[&&&&&&&0,&&&&&&&0,&&&&&&&1]
[&&&&&&&1,&&&&&&&0,&&&&&&&0]
[&&&&&&&0,&&cos(w),&-sin(w)]
[&&&&&&&0,&&sin(w),&&cos(w)]
[&&cos(v),&&&&&&&0,&-sin(v)]
[&&&&&&&0,&&&&&&&1,&&&&&&&0]
[&&sin(v),&&&&&&&0,&&cos(v)]
[&&cos(u)*cos(v),&&sin(u)*cos(w)-cos(u)*sin(v)*sin(w),&-sin(u)*sin(w)-cos(u)*sin(v)*cos(w)]
[&-sin(u)*cos(v),&&cos(u)*cos(w)+sin(u)*sin(v)*sin(w),&-cos(u)*sin(w)+sin(u)*sin(v)*cos(w)]
[&&&&&&&&&sin(v),&&&&&&&&&&&&&&&&&&&&&&&cos(v)*sin(w),&&&&&&&&&&&&&&&&&&&&&&&cos(v)*cos(w)]
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 matlab求矩阵特征向量 的文章

 

随机推荐