matlab在科学计算中的应用矩阵的特征值问题.ppt
一般矩阵的特征值与特征向量,格式:d=eig(A)只求解特征值格式:V,D=eig(A)求解特征值和特征向量。,应用于A矩阵特征值无重值即特征向量线性无关的情形。,例:直接求解:A=16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1;eig(A)ans=34.0000 8.9443-8.9443 0.0000,精确解:eig(sym(A)%符号工具箱中也提供了eig()函数ans=0 34 4*5(1/2)-4*5(1/2)高精度数值解:vpa(ans,70)ans=0 34.28 97083588981642084,同时求出特征值与特征向量:直接求解:v,d=eig(A)v=-0.5000-0.8236 0.3764-0.2236-0.5000 0.4236 0.0236-0.6708-0.5000 0.0236 0.4236 0.6708-0.5000 0.3764-0.8236 0.2236d=34.0000 0 0 0 0 8.9443 0 0 0 0-8.9443 0 0 0 0 0.0000,解析解:v,d=eig(sym(A)v=-1,1,-8*5(1/2)-17,8*5(1/2)-17-3,1,4*5(1/2)+9,-4*5(1/2)+9 3,1,1,1 1,1,4*5(1/2)+7,-4*5(1/2)+7 d=0,0,0,0 0,34,0,0 0,0,4*5(1/2),0 0,0,0,-4*5(1/2),4.6.2 矩阵的广义特征向量问题,格式:d=eig(A,B)求解广义特征值。格式:V,D=eig(A,B)求解广义特征值和特征向量。,其中B为正定矩阵,为标量,特别的,当B=I,则化成普通矩阵特征值问题。,例:直接求解:A=5,7,6,5;7,10,8,7;6,8,10,9;5,7,9,10;B=2,6,-1,-2;5,-1,2,3;-3,-4,1,10;5,-2,-3,8;V,D=eig(A,B)V=0.3697-0.3741+0.6259i-0.3741-0.6259i 1.0000 0.9948-0.0674-0.2531i-0.0674+0.2531i-0.6090 0.7979 0.9239+0.0264i 0.9239-0.0264i-0.2316 1.0000-0.6599-0.3263i-0.6599+0.3263i 0.1319,D=4.7564 0 0 0 0 0.0471+0.1750i 0 0 0 0 0.0471-0.1750i 0 0 0 0-0.0037 检验:norm(A*V-B*V*D)ans=1.3897e-014 注意:符号运算工具箱中的eig()函数不支持广义特征值的运算。,稀疏矩阵,对于一个 n 阶矩阵,通常需要 n2 的存储空间,当 n 很大时,进行矩阵运算时会占用大量的内存空间和运算时间。,Matlab支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵的存储空间和计算时间上都有很大的优点。,在许多实际问题中遇到的大规模矩阵中通常含有大量0元素,这样的矩阵称为稀疏矩阵。,稀疏矩阵及其算法,就是不存储那些“0”元素,也不对它们进行操作,从而节省内存空间和计算时间;稀疏矩阵计算的复杂性和代价仅仅取决于稀疏矩阵的非零元素的个数。,4.6 稀疏矩阵技术,4.6.1 矩阵存储方式MATLAB的矩阵有两种存储方式:完全存储方式:将矩阵的全部元素按列存储稀疏存储方式:仅存储矩阵所有的非零元素 的值及其位置 对于具有大量零元素的稀疏矩阵来说稀疏存储方式更有效。,例如,矩阵,具有稀疏矩阵特征其完全存储方式是按列存储的全部12个元素 1,0,2,0,5,0,0,0,0,0,0,7其稀疏存储方式如下:(1,1)1,(3,1),2,(2,2),5(3,4),7 括号内为元素的行列位置,后面为元素值。当矩阵非常的“稀疏”时,会有效的节省存储空间。,4.6.2 稀疏矩阵的建立:,格式:A=sparse(S);将矩阵S转换为稀疏矩阵A;,Sfull(A);返回和稀疏存储方式A 对应的完全存储方式,满矩阵与稀疏矩阵之间的转化,格式:S=sparse(i,j,s,m,n)其中i 和j 分别是矩阵非零元素的行 和列指标向量,s 是非零元素值向量,m,n 分别是矩阵的行数和列数。,直接创建稀疏矩阵,例:n=5;a1=sparse(1:n,1:n,4*ones(1,n),n,n)a1=(1,1)4(2,2)4(3,3)4(4,4)4(5,5)4,例:A=1 0 0 2;0 0 3 0;0 4 0 0;sparse(A)ans=(1,1)1(3,2)4(2,3)3(1,4)2,例:a2=sparse(2:n,1:n-1,ones(1,n-1),n,n)%向量i,j,s的维数相同a2=(2,1)1(3,2)1(4,3)1(5,4)1 full(a2)生成完全存储方式ans=0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0,例:n=5,建立主对角线上元素为4,两条次对角线为1的三对角阵。n=5;a1=sparse(1:n,1:n,4*ones(1,n),n,n);a2=sparse(2:n,1:n-1,ones(1,n-1),n,n);a=a1+a2+a2,full(a)ans=4 1 0 0 0 1 4 1 0 0 0 1 4 1 0 0 0 1 4 1 0 0 0 1 4,稀疏带状矩阵的创建,例:n=5 b=spdiags(ones(n,1),4*ones(n,1),ones(n,1),-1,0,1,n,n)full(b),格式:S=spdiags(B,d,m,n),m 和n 分别是矩阵的行数和列数;d是长度为p的整数向量,确定矩阵S的对角线位置;B是全元素矩阵,用来给定S对角线位置上的元素,,从文件中创建稀疏矩阵,格式:load T.txt S=spconvert(T),对于无规律的稀疏矩阵,可使用此命令由外部数据 转化为稀疏矩阵。调用形式:先用load函数加载以行表示对应位置和 元素值的.dat文本文件,再用此命令转化为稀疏矩阵。,例:无规律稀疏矩阵的建立。首先编制文本文件sp.dat如下:5 1 5.003 5 8.004 4 2.00,load sp.dat spconvert(sp)ans=(5,1)5(4,4)2(3,5)8 full(ans)ans=0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 2 0 5 0 0 0 0,其它稀疏矩阵创建函数,格式:S=speye(m,n)%生成mn的单位稀疏矩阵 S=speye(size(A)%生成Size(A)的单位稀疏矩阵,格式:R=sprand(S)%生成与S有相同结构的随机稀疏矩阵,%且元素服从均匀分布,格式:S=sprand(m,n,density)%生成一个mn的随机稀疏矩阵%约有 density*m*n 个非零元素且服从均匀分布%density为参数,0=density=1,4.6.3 稀疏矩阵的计算:同满矩阵比较,稀疏矩阵在算法上有很大的不同。具体表现在存储空间减少,计算时间减少。例:比较求解下面方程组n1000时两种方法的差别。,n=1000;a1=sparse(1:n,1:n,4*ones(1,n),n,n);a2=sparse(2:n,1:n-1,ones(1,n-1),n,n);a=a1+a2+a2;b=ones(1000,1);tic;x=ab;t1=toct1=0.4800 a=full(a);tic;x=ab;t2=toct2=1.3220,