Matlab笔记数值计算—线代篇016

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

16.数值计算—线代篇一、行列式det(A)——矩阵A的行列式;inv(A)——矩阵A的逆;rank(A)——矩阵A的秩;B(:,i)=b——将向量b赋给矩阵B的第i行;[A,eye(5)]——在矩阵A右端,拼接5阶单位矩阵;[U,s]=rref(A)——对矩阵A作行变换,U返回A的最简行阶梯形矩阵,s为行向量存储U的各行首个非0元所在列号,length(s)即为A的秩;例1用初等行变换法求矩阵123221343A的逆。代码:formatshortg%省略小数位多余的0A=[123;221;343];B=rref([A,eye(3)])%对矩阵[A,I]进行初等行变换,得到最简行阶梯矩阵Bif(rank(B(:,1:3))==3)%判断B的前3列是否为单位阵,若是取出后3列,即A逆A1=B(:,4:6)elsedisp('A不可逆');end运行结果:B=10013-2010-1.5-32.500111-1A1=13-2-1.5-32.511-1例2解方程2232113221051327132xx代码:symsx;A=[3211;322-x^21;5132;7-x^2132];D=det(A)f=factor(D)%对行列式D进行因式分解X=solve(D)%求方程“D=0”的解运行结果:D=-3*(x^2-1)*(x^2-2)f=-3*(x-1)*(x+1)*(x^2-2)X=-112^(1/2)-2^(1/2)二、向量组的线性相关性例3向量组123452434713216,,,,313157534170求它的秩和一个最大线性无关组,并用来表示其它向量。代码:A=[2-135;4-313;3-234;4-11517;7-6-70]';%formatrat;%使用分数表示rref(A)运行结果:ans=10021010-350014-500000可见,向量组的秩是3,123,,是一个最大线性无关组;并且4123234,512355注:也可以用[R,s]=rref(A);length(s)得到秩。三、线性方程组的通解null(A,‘r’)——返回齐次线性方程组Ax=0的基础解系,选项’r’返回有理数解,否则按分数显示;x0=inv(A)*b——若A-1存在,直接可以得到Ax=b的一个特解x0,否则只能按求解理论求解;subs(A,k,n),将矩阵或式A中的k用n代替。例4求下列方程组的通解:123451234512345123452441623626237364619232521943xxxxxxxxxxxxxxxxxxxx代码:symsx;A=[2,4,-1,4,16;-3,-6,2,-6,-23;3,6,-4,6,19;1,2,5,2,19];b=[-2;7;-23;43];[R,s]=rref([A,b])[m,n]=size(A);x0=zeros(n,1);%将特解x0初始化为零向量r=length(s);%矩阵A的秩赋给变量rx0(s,:)=R(1:r,end)%矩阵R的最后一列按基准元素的位置得到特解x0x=null(A,'r')%得到对应齐次方程组Ax=0的基础解系运行结果:R=120293001028000000000000s=13x0=30800x=-2-2-910000-2010001例5已知齐次线性方程组1234123412341234(12)33303(2)33033(2)30333(11)0kxxxxxkxxxxxkxxxxxkx问当k取何值时方程组有非零解?在有非零解的情况下,求出其基础解系。代码:symsk;A=[1-2*k,3,3,3;3,2-k,3,3;3,3,2-k,3;3,3,3,11-k];D=det(A)K=solve(D)%解方程“D=0”即要求的k值fori=1:4Ak=double(subs(A,k,K(i)));%用K(i)替换矩阵A中的k,得到的是符号矩阵,%再用double函数转化为数值矩阵x=null(Ak,'r')end运行结果:D=2*k^4-31*k^3+30*k^2+161*k+98K=-1-17/214x=-1-1100100x=-1-1100100x=-0.5-1-11x=0.20.40.41四、基变换设Rn中的两组基向量U和V(都是n×n矩阵),若向量w在以U为基的坐标系内的坐标为wu(n×1数组),在以V为基的坐标系内的坐标为wv(n×1数组),则在基准坐标系内的坐标应分别为U*wu和V*wv,这两者应该相等,即U*wu=V*wv所谓基坐标的变换,就是已知wu,求出wv.将上式两边均左乘V-1,得到wv=V-1*U*wu故坐标变换矩阵为P=V-1*U.例6已知R4中的两组基向量为11-1-12-12-1-11100111,20-21111302111222求从U到V的坐标变换矩阵P.代码:U=[11-1-1;2-12-1;-1110;0111];V=[20-21;1113;0211;1222];P=inv(V)*U%从U到V的基变换矩阵wu=[1234]';wv=P*wu%已知某向量在U坐标系下坐标为wu,求它在V坐标系下的坐标运行结果:P=01-11-110000011-11-1wv=314-2五、特征值与特征向量变换可以用矩阵表示。矩阵A的特征向量是指,经过矩阵A(左乘)变换后不发生方向改变的那些向量;特征值是指在经过这些变换后特征向量的伸缩的倍数。对于实对称矩阵来说,不同特征值对应的特征向量必定正交。矩阵(变换)A的所有特征向量组成了该矩阵(变换)的一组基,可以理解为坐标系的坐标轴,可以把这个坐标系扭曲、拉伸、旋转,称为基变换。例如,在主成分分析中,通过在拉伸最大的方向设置基,忽略一些小的量,可以极大的压缩数据而减小失真。矩阵(变换)的所有特征向量作为空间的基之所以重要,是因为在这些方向上矩阵(变换)可以拉伸向量而不必扭曲和选择它,使得计算大为简单。2.Matlab实现orth(A)——返回矩阵A的列向量组构成空间的标准正交基;P=poly(A)——返回矩阵A的特征多项式,P是行向量,元素为多项式系数;roots(P)——求多项式P的零点;r=eig(A)——r为列向量,元素为矩阵A的特征值;[V,D]=eig(A)——矩阵D为A的特征值(从小到大排列)所构成的对角矩阵,V的列向量为A的特征向量,与D中特征值一一对应(VTAV=D,VT=V-1),D也是矩阵A的相似对角化矩阵;[V,D]=schur(A)——矩阵D为对称矩阵A的特征值所构成的对角阵,V的列为A的单位特征向量,与D中特征值一一对应;例7求下列矩阵的特征值和特征向量:22201921691184610847代码:formatshortgA=[123;213;112];%特征多项式法%P=poly(A);%lamda1=roots(P)lamda2=eig(A)[V,D]=eig(A)inv(V)*A*V运行结果:lamda2=5.0000-1.0000-0.0000V=0.63960.7071-0.57740.6396-0.7071-0.57740.4264-0.00000.5774D=5.0000000-1.0000000-0.0000ans=5.0000-0.00000-0.0000-1.0000-0.0000-0.00000.00000例8(人口迁徙模型)设某大城市的总人口是固定的。人口的分布则因居民在市区和郊区之间迁徙而变化。每年有6%的市区居民搬到郊区去住,而有2%的郊区居民搬到市区。假如开始时有30%的居民住在市区,70%的居民住在郊区,问:(1)10年后市区和郊区的居民人口比例是多少?30年、50年后又如何?(2)无限增加时间,该比例最终是否会趋于稳定?问题分析:该问题可以用矩阵乘法来描述。(1)把人口变量用市区xc和郊区xs两个分量表示,一年以后,市区人口为xc1=(1-0.06)xc0+0.02xs0,郊区人口xs1=0.06xc0+(1-0.02)xs0,用矩阵乘法来表示:11010.940.020.30.060.980.7csxxAxx从初始到k年,此关系保持不变,故10kkkxAxAx对于(2),借助矩阵A的特征值和特征向量,因为A作用在其特征向量上只改变值大小(为其特征值的倍数)而不改变方向。为此先求出A的特征值λ1,λ2及特征向量v1,v2;将x0用特征向量v1,v2作为坐标系表示出来(即做以[v1,v2]为基坐标的基变换),x0=αv1+βv2从而,012121122()kkkkkkkxAxAvvAvAvvv令k趋于∞,判断xk是否存在极限。代码:x0=[0.3;0.7];A=[0.940.02;0.060.98];x1=A*x0x10=A^10*x0x50=A^50*x0[V,D]=eig(A)V(:,1)=V(:,1)./V(2,1);V(:,2)=V(:,2)./V(1,2)%对V做初等变换化简k=inv(V)*x0%求x0用特征向量作为坐标系的表示%x0在原坐标系I中的表示为x0,%则基坐标变换到在坐标系V的表示为x=P*x0=inv(V)*I*x0symsn;xn=k(1)*D(1,1)^n*V(:,1)+k(2)*D(2,2)^n*V(:,2);%xn=-0.05*(0.92)^n*v1+0.25*1^n*v2limit(xn,n,inf)运行结果:x1=0.29600.7040x10=0.27170.7283x50=0.25080.7492V=-0.7071-0.31620.7071-0.9487D=0.9200001.0000V=-1.00001.00001.00003.0000k=-0.05000.2500ans=1/43/4最终得到:无限增加时间k,市区和郊区人口之比将趋向一组常数0.25/0.75.六、二次型例9用正交变换法将下列二次型化为标准型(保持几何形状不变):2221231231223(,,)2344fxxxxxxxxxx代码:A=[1-20;-22-2;0,-2,3];%输入二次型的矩阵A[V,D]=eig(A)%或用[V,D]=schur(A),结果相同;V为正交变换矩阵,即Y=VXsymsy1y2y3;f=[y1,y2,y3]*D*[y1;y2;y3]运行结果:V=-0.6667-0.66670.3333-0.66670.3333-0.6667-0.33330.66670.6667D=-1.00000002.00000005.0000f=-y1^2+2*y2^2+5*y3^2注:XTAX=YTVTAVY=YTDY七、用矩阵做图形变换图形变换是指对图形进行平移、旋转、缩放、投影(透视)等变换,其实质是改变图形的各个顶点的坐标。图形变换可以通过对表示图形坐标的矩阵进行运算来实现,称为矩阵变换法:*=原图形变换后图形变换顶点坐标顶点坐标矩阵矩阵矩阵注:也可以用变换矩阵左乘实现,上式两边转置即可,即:BTAT=CT.下面只介绍二维图形的矩阵变换,代码示例是类似的省略之。1.基本变换''1111''222222''22*=nnnnnnxyxyxyabxycdxyxy(1)缩放变换00axyaxdyd若a=d则为等比例缩放;若a=1,则x方向不变;若a=0,则图形压缩为y轴上的线

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功