1、第8章 用向量空间解方程组,8.1 向量和向量空间 二维空间R2中的向量用两个沿列向的元素表示u=2;4; v=3;-1; plot(2,3,4,1,x);hold on % 若用中的子程序drawvec, drawvec(u);hold on drawvec(v,g);hold off,二维向量张成的空间,平面上的任何一点w1;w2是不是一定能用u和v的线性组合来实现?即是不是一定能找到一组常数c1,c2,使得c1,c2取所有可能的值,得到的w的集合就是u和v张成的子空间,在所给的u和v下,它是一个平面。 若u和v两个向量的各元素成简单的比例关系,合成的向量只能在一根直线上,不可能张成整个二
2、维平面。这种情况下,称这两个向量u和v是线性相关的。,2三维空间中的向量,若v1,v2和v3都是三维空间的列向量。可以用空间坐标中的三个点,或从坐标原点引向这三点的箭头来表示。用矩阵代数表示如下如果三个基本向量之间线性无关,那么它们的线性组合可以覆盖(张成)整个三维空间。如果三个向量共面,即相关,就不能张成三维空间。判断三个向量的线性相关性,可用行列式。,三维空间向量的相关性,即看三向量并列所得矩阵的行列式det(A)=0 相关 det(A)0 不相关 行列式的几何意义:在二维是两个向量组成的平行四边形面积,在三维是三个向量组成的平行六面体的体积。,行列式的几何意义,二维三维 det(A)=右
3、图平行六面体的体积,n维向量的相关性,在进入三维以上的空间时,已经没有可与面积、体积直接相当的概念可用了,所以采用了秩的概念。如果A的行列式为零,也就是它的秩r小于n时,说明这n个向量是线性相关的。 秩的概念也概括了面积存在(r2)和体积存在(r3)的意义,因此,它是更高度的抽象。,8.2 向量空间和基向量,若r个向量是线性无关的,则它们的线性组合的全体V就构成了r维空间Rr 。如果它不是空集,则V称为向量空间。生成V的r个线性无关的向量v称为基向量或基(Basis)。 当rn时,给定的n个向量就是一组基。如果rn,那就要在n个向量中选出r个线性无关的向量。用秩的概念还无法判定哪些向量是线性无
4、关的,这时又要藉助于把矩阵简化为阶梯形式的方法。,例8.2 求四个五维向量的子空间,这四个向量组成的矩 阵如右,对它进行行 阶梯简化。程序为: A4,5,4,1;0,3,0,1;2,1,2,0;5,4,5,3;1,4,1,1 U0,iprref(A) 得到 ip=1,2,4 其三个枢轴列对应的就是 三个线性无关的列向量。,三个向量空间位置演示程序,三维空间中,为了观察三个向量的空间关系,ATLAST手册还提供了一个演示程序viewsubspaces(u,v,w),它用蓝色直线显示向量u,同时用红色显示v和w所组张成的平行四边形平面,画在同一张立体图上。例如:u=-1;1;8;v=5;-4;7;
5、w=-3;1;-5;viewsubspaces(u,v,w),grid on 三个向量的起点都是xyz0的原点。要看清其几何意义,还是需要一定的空间想象力。,三个向量的空间关系,例8.3 w是否在v1,v2,v3的空间内,设w是否能由v1,v2,v3的线性组合构成的问题,取决于线性方程组 解的存在性。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=vw % 把基向量组成矩阵v求解也可以按det(v)是否为零进行判别,8.3 向量的内积和正交性,在三维空间中,x和y两个向量的内积定义为x,yx1y1x2y2
6、x3y3。m维情况可以写成这是一个标量。向量x与自己求内积: 得到的是其各分量的平方和,其平方根就等于向量的长度(或模、或范数norm)。,内积的几何意义,在平面情况,两向量的内积除以它们的长度是它们夹角的余弦,可以利用下图证明。 根据余弦定律, 最后得到此结果可推广到高维空间,只是被抽象化了:,例8.4 基向量长度规一化和夹角,例8.4 求例8.3中的单位基向量v10,v20,v30,并分别求它们之间的夹角。 解:解题的程序为ag822:v10=v1/norm(v1), v20=v2/norm(v2), v30=v3/norm(v1),theta12=acos(v1*v2)/(norm(v1
7、)*norm(v2)theta13=acos(v1*v3)/(norm(v1)*norm(v3)theta23=acos(v3*v2)/(norm(v3)*norm(v2) ),正交基向量的生成,两向量x,y正交的条件是它们的内积为零。 给出向量求正交基常用施密特算法,ATLAST手册中给出了相应的程序gschmidt。调用时键入Q,R=gschmidt(v),Q就是单位正交基向量e。 MATLAB中不用施密特算法,而用更好的算法编成了正交分解子程序qr.m,它将v分解为Q和R两个矩阵的乘积。调用方法为:Q, Rqr(v) Q就是mm单位正交矩阵。,基向量正交化的schmidt公式,得到qi(
8、i1,2,k)后,再把它们除以norm(qi),就可归一化为单位向量ek。,基向量正交化的schmidt子程序,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);for k=2:nR(1:k1,k)=Q(:,1:k1)*V(:,k);Q(:,k)=V(:,k)Q(:,1:k1)*R(1:k1,k);R(k,k)=norm(Q(:,k);Q(:,k)=Q(:,k)/R(k,k);end,求单位正交基向量的例,例8.5 对于例8.3的数据,求其规范化正交基向量e1,e2,e
9、n。 解:程序为V7,4,9;4,5,4;2,1,4;9,7,7Q,Rqr(v) % 或 Q,Rgschmidt(v) eQ(:,1:3) 得到:,8.4 齐次方程Ax=0的解空间,设有m个方程和n个变量,A的秩是r,则经过行简化后得到的行阶梯矩阵U的有r个枢轴元素,非枢轴元素有nr个。因此该方程的全解将等于Axb 的一个特解加上其齐次方程Ax0的通解。本节将从向量空间的视点来讨论它的解,因为通解是nr阶的无穷的集合,所以要研究解所张成的向量空间。 Ax0意味着这些解x的集合经过矩阵A变换后都映射到像空间的零点,所以英文把此解所张成的空间称为Null Space,直译为零空间。我国的通用译名为
10、解空间或基础解系,我们觉得用齐次解空间较为准确。,齐次方程Ax=0解空间的例,例8.6 试求下列系数矩阵的齐次解空间:解:输入A,并求出它的简化行阶梯形式,键入U0,iprref(A),得到ip1,3,齐次解空间的例(续),其通解可以看成三个向量的线性组合这个式子就表示了一个三维的向量空间,在这个空间中所有的向量都能使Ax0。所以它被称为齐次解空间或零空间。,求齐次解空间的子程序,这样齐次解空间的m is系数矩阵N可以用下面的程序来自动完成:functin N=nulspace(A)m,n=size(A);U0,ip=rref(A)is=1:n; is(ip)=;N(ip,:)=-U0(1:r
11、ank(A),is);N(is,:)=eye(n-rank(A) MATLAB中的子程序为N=null(A).,计算例题8.7,系数矩阵A如右, 求Ax0的通解。 解:程序ag842 先输入A ,再键入 vnulbasis(A) %或 v=null(A,r) r表示用有理分式的基向量 得到都是三个分量并列,v=v1,v2,v3,8.5 解超定方程的思路,有时用向量空间的方法可以更为简捷地推导公式,超定方程的解就是一个例子。 既然我们已讨论了适定方程组和不定方程组的求解方法,自然会提出如何解超定方程组的问题。 工程问题都可以允许方程有误差,把一组解代入方程后,每个方程都有误差;要找误差在一定意义
12、下的总和为最小的解。在这样的思路引导下,就产生了超定方程求解的方法。,误差线性方程组的建立,引入误差向量e。eAxb 写出其完全的矩阵形式如下问题是,找到解x,使e的长度或范数为最小。,从向量空间的视点分析,研究例6.1的超定方程组(d):改写成 简写为 选择不同的x1和x2将得到不同的合成向量A*xx1v1x2v2q ,q必定处于v1和v2张成的平面之内。而方程中的b则一般不会在这个平面内,,本例的向量空间图,这时最近似的解就应该是该平面上与b点最近的点所对应的坐标A*xhat。它应该是b点向v1和v2张成的平面的投影。所以和b的连线应该和v1和v2张成的平面垂直,也就是说必须分别与v1和v
13、2正交。如图8.6所示。,最小二乘解的公式推导,A*xhat和b的连线向量应该是这两个向量之差,即 ,它与v1和v2正交的要求可以分别表示为:和 综合在一起可以写成:最后得到公式,最小二乘解的数字例,例8. 求题6.1(d)方程组的最小二乘解。 解:MATLAB程序ag808如下:A=1,1;1,1; 1,2, b=1;3;3xhat=inv(A*A)*A*be=A*xhatb, norm(e) 运行此程序,得到,MATLAB中超定方程的解,在MATLAB中,把运算(ATA) -1AT单独编成一个子程序,称为pinv函数。求最小二乘解的公式可以写成 xpinv(A)*b,与适定方程的解x in
14、v(A)* b非常相似,只是pinv函数并不要求A是方阵。 最小二乘解也可用运算符表示,这就把欠定方程、适定方程和超定方程用统一的运算格式:x A b MATLAB会自动根据系数矩阵A的行数m和列数n,来判断采用哪个方法和程序。不过对于欠定方程,这个式子只给出了一个特解,没给通解。,数字实例8.9:实验数据处理,例8.9 设在某一实验中,给某元件加1,2,3,4,5v电压,测得的电流为0.2339,0.3812,0.5759,0.8153,0.9742ma。求此元件的电阻。 解:设直线的方程为y c(1)x c(2),待定的系数是c(1),c(2)。将上述数据分别代入x,y,把这五个方程联立,
15、用矩阵表述:,实验数据处理实例,写成 datax *c(1) ones(N,1) * c(2) datay 其中datax , datay都是5行数据列向量,这是5个一次代数方程,含两个未知数,是一个超定方程,解的程序如下: A datax , ones(N,1); B datay; c A B,8.6.1 价格平衡模型,单位消耗列向量vi表示第i个部门每产出一个单位产品中,本部门和其他各个部门消耗的百分比。 于是总的价格平衡方程可以写成为:( I V ) p =0 此等式右端常数项为零,是一个齐次方程。它有非零解的条件是系数行列式等于零。,8.6.2 宏观经济模型,为了满足外部的最终需求向量
16、d,各生产部门的实际产出x应该是多少,这对于经济计划的制订当然很有价值。因为x=内部需求外部需求d 考虑到单位消耗列向量vi和内部需求矩阵V,总的需求方程可以写成为:x Vx = d,移项得 ( I V )x=d 因而 x = inv( I V )*d,8.6.3 信号流图模型,信号流图是用来表示和分析复杂系统内的信号变换关系的工具。右图方程如下。写成矩阵方程或 x=QxPu移项整理,可以得到求信号向量x的公式。,信号流图的矩阵解法,( I Q ) x= Pu, x = inv( I Q )*Pu 定义系统的传递函数W为输出信号与输入信号之比x/u,则W可按下式求得:W=x/u = inv(
17、I Q )*P 因为 得到,复杂点的信号流图,按右面的信号流图,照上述方法列出它的方程如下: x1 = -G4x3 + u x2 = G1x1-G5x4 x3 = G2x2 x4 = G3x3,信号流图的矩阵方程,列出的矩阵方程为:矩阵中的参数是符号而不是数,MATLAB的许多函数(特别是求逆)都可以处理符号,带来了极大的方便。只要在程序第一行注明哪些是符号变量:syms G1 G2 ,用符号运算工具箱求解,矩阵代数方法的最大好处是可用于任意高的阶次的信号流图,实现传递函数推导的自动化 如下题的MATLAB程序ag863syms G1 G2 G3 G4 G5Q=0,0,G4,0;G1,0,0,
18、G5;0,G2,0,0;0,0,G3,0,P=1;0;0;0W=inv(eye(4)Q)*Ppretty(W(4) 运行结果为,8.6.4 数字滤波器系统函数,数字滤波器的网络结构图也是一种信号流图。按照图示情况,可以写出矩阵形式的方程为 :,数字滤波器的矩阵方程,可以写出矩阵形式的方程为 : 系统函数W也可以写成:可以用类似的MATLAB符号运算工具箱求解。,矩阵法求数字滤波器系统函数,程序ag864 syms q Q(1,2)=q; Q(2,3)=3/8*q-1/4; Q(3,1)=1; Q(3,3)=0; P=2;1/4;0 W=inv(eye(3)-Q)*P pretty(W(3) 程序运行结果为,