中科院矩阵分析与应用大作业
- 格式:docx
- 大小:30.01 KB
- 文档页数:8
中科院矩阵分析与应用大作业实现LU分解 QR分解 Householder reduction、Givens reductionMatlab 代码:function [] =juzhendazuoyeA=input('请输入一个矩阵A=');x=input('请输入序号 1 LU分解 2 Gram-Schmidt分解 3 Householder reduction 4 Givens reduction:' );if(x==1)%%*************LU分解*****************%%disp('PA=LU')m=size(A,1); % m等于矩阵A的行数n=size(A,2); % n等于矩阵A的列数if(m==n) % 判断矩阵A是不是方阵% 如果矩阵A不是方阵那么就输出“error”U=A; % 把矩阵A赋值给矩阵UL=zeros(n); % 先将L设为单位阵P=eye(n); % 首先将交换矩阵P设为单位矩阵for j=1:n-1for i=j+1:nif (U(j,j)~=0) %判断主元元素是否不为0L(i,j)=U(i,j)/U(j,j);U(i,:)=U(i,:)-U(j,:)*U(i,j)/U(j,j); % U(j,j)为主元元素elsea=j+1; % 令a等于j+1while((U(a,j)==0)&&(a<n)) % 判断主元元素所对的下一行元素是不是0,a是否小于na=a+1; % 寻找下一个元素endtemp=U(j,:); % 判断主元元素所在列(除主元元素外)第一个不为零的元素的所在行与主元元素所在行进行行交换U(j,:)=U(a,:); % U两行交换位置U(a,:)=temp ;m=L(j,:);L(j,:)=L(a,:); % L矩阵两行交换位置L(a,:)=m;q=P(j,:);P(j,:)=P(a,:); % 交换矩阵的两行交换P(a,:)=q;L(i,j)=U(i,j)/U(j,j);U(i,:)=U(i,:)-U(j,:)*U(i,j)/U(j,j);endendendfor k=1:nL(k,k)=1; % 把L矩阵的对角线赋值为1endL % 输出下三角矩阵LU % 输出上三角矩阵UP % 输出交换矩阵PA=inv(P)*L*Uelse disp('error')endendif(x==2) %% 判断如果x=2,那么将执行schmid分解%%**************Gram-Schmidt正交分解*****************%%disp('A=Q*R')Q=zeros(size(A,1),size(A,2)); %% 先把Q设为全零矩阵R=zeros(size(A,2)); %% R设置为全零矩阵a=A(:,1); %% 把第一列赋值给aR(1,1)=norm(a); %% 求第一列列向量的模值a=a/norm(a); %% 求第一列列向量的单位向量Q(:,1)=a; %% 把a赋值给Q的第一列for j=2:size(A,2)m=zeros(size(A,1),1); %% 取A的第一列for i=1:j-1R(i,j)=Q(:,i)'* A(:,j); %% q的转置乘以A的第j列向量m=m+R(i,j)*Q(:,i); %% q的转置乘以A的列向量endQ(:,j)=A(:,j)-m; %% A的第j列减去q(i)和A(:,j)的内积和R(j,j)=norm(Q(:,j)); %% 把Q的列向量的模值赋值给R(j,j)Q(:,j)=Q(:,j)/norm(Q(:,j)); %% 把Q的列向量的单位化endQ %% 输出正交矩阵QR %% 输出上三角矩阵Rendif(x==3) %% 判断如果x=3,那么将进行Householder reduction %%************Householder reduction***********%%disp('P*A=T')R=zeros(size(A,1)); %% 把R设置为矩阵维数等于矩阵的行数的全零方阵R1=zeros(size(A,1)); %% 把R1设为矩阵维数等于矩阵的行数的全零方阵M=A; %% 将A赋给MP=eye(size(M,1)); %% 先将P矩阵设为维数等于M的单位矩阵for i=1:(size(M,1)-1)U=A; %% 将A赋值给UU(1,1)=U(1,1)-norm(U(:,1)); %% 将U的第一列的第一行元素减去U的第一列列向量的模值R=eye(size(U,1))-2*U(:,1)*U(:,1)'/(U(:,1)'* U(:,1)); %%I-2*U(:,1)*U(:,1)'/(U(:,1)'* U(:,1)A=R*A; %% R乘以A赋值给AA=A(2:size(A,1),2:size(A,2)); %% 取A的子矩阵if(size(R,1)<size(M,1)) %% 判断矩阵R的行数是否小于矩阵M的行数,如果小于进行下步:S=eye(size(M,1)-size(R,1)); %% 将S设置为维数等于矩阵M的行数减去矩阵R的行数维的单位矩阵V=zeros(size(M,1)-size(R,1),size(R,1)); %% 将V设置为矩阵行数等于M 的行数减去R的行数,列数等于矩阵R的列数F=zeros(size(R,1),size(M,1)-size(R,1)); %% 将F矩阵设置行数等于R的行数,列数等于矩阵M的行数减去矩阵R的行数R1=[S V;F R]; %% 将 S V F D 合成矩阵R1else R1=R; %% 如果不满矩阵R的行数小于矩阵M 的行数,则把R赋值给R1endP=R1*P;endP %% 输出正交矩阵PT=P*M %% 输出矩阵T,如果矩阵M的行数等于列数的话,T为上三角矩阵endif(x==4) %% 判断x的值是否等于4,等于4则进行Givens reduction%%***********Givens reduction**********%%disp('P*A=R')U=A; %% 将A赋值给Uw=size(A,1); %% w等于矩阵A的行数r=eye(w); %% 将r设置为维数为w的单位矩阵for k=1:w-1m=eye(size(A,1)); %% 将m设置为维数等于A的行数单位矩阵for i=2:size(A,1)P=eye(size(A,1));a=0; %% 将a是设置为0,方便求第一列前i个元素的平方和for j=1:iu=sqrt(a);a=a+A(j,1)^2;ends=sqrt(a); %% 将第一列前i个元素的平方开根P(1,1)=u/s; %% 将u/s赋值给旋转矩阵P的第一行的第一列P(i,i)=u/s; %% 将u/s赋值给旋转矩阵P的第i行和第i列P(i,1)=-A(i,1)/s; %% 将 -A(i,1)赋值非P的第i行的第一列P(1,i)=A(i,1)/s; %% 将 A(i,i)赋值给P的第一行的第i列m=P*m; %% P乘以矩阵m并赋值给mendA=m*A; %% 矩阵m*A赋值给AA=A(2:size(A,1),2:size(A,2)); %% 取A的子矩阵if(size(m,1)<w) %% 如果矩阵m的行数小于wc=eye(w-size(m,1)); %% 将c设置为维数等于w-矩阵m的行数的单位矩阵d=zeros(w-size(m,1),size(m,1));v=zeros(size(m,1),w-size(m,1));p=[c,d;v,m]; %% 进行和并矩阵elsep=m; %% 如果不满足矩阵m的行数小于w,则把m赋值给pendr=p*r;endP=r %% 将r赋值给正交矩阵P,并输出PR=P*U %% 输出矩阵R,若R的行数等于列数的话,R为上三角矩阵endend。
矩阵分析及其应用 3.1矩阵序列定义3.1设矩阵序列{A (k )},其中A(k)=( a (k )) C m n ,当k a j" a u 时,称矩阵序列{A (k)}收敛,并称矩阵 A=( a ij )为矩 阵序列{A (k)}的极限,或称{A (k)}收敛于A,记为lim A (k)A 或 A (k) Ak不收敛的矩阵序列称为发散的。
由定义,矩阵序列 A (k )发散的充要条件为存在 j 使得数列a (k)发散。
类似地,我们可以定义矩阵收敛的 Cauchy 定义 定义3.1'矩阵序列{A (k)}收敛的充要条件为 对任给>0存在N(),当k, l N()时有 ||A (k) A (l)|| <其中||.|为任意的广义矩阵范数。
sin 』)n nsin(k)如果直接按定义我们因为求不出 A (n)的极限从而从而只要I 充分大,则当m, n > l 时就有sin(k)k 2这样A (l)收敛。
定理3.1 A (k) A 的充要条件为 ||A (k) A|| 0证明:利用广义矩阵范数的等价性定理,仅对 范数可以证明。
即c 1ILA (k) A||||A (k) AII C 2 ||A (k) AII 性质 0 若 A (k)A ,则 ||A (k) II IIAII 成立。
性质 1. 设 A (k)A m n ,B (k) B m n , 则A (k)+ B(k) A+ B , ,C 性质 2. 设 A (k)A m n ,B (k )B n l ,贝UA (k)B (k)A B证明:由于矩阵范数地等价性,我们可以只讨论相容的 矩阵范数。
||A (k )B (k) A B|| || A (k) B (k) A B (k)||+||AB (k)A B|||| A (k) A|| ||B (k)||+||A||||B (k) B||例 1 A (n)k m 1k(k 1)相反,由于注意||B(k)|| ||B||,则结论可得。
中科院矩阵分析与应用大作业1. 研究背景矩阵是数学领域中的重要概念之一,它在各个领域中都有广泛的应用。
在计算机科学中,矩阵常常用于图像处理、计算机视觉等领域;在数据分析中,矩阵则被用来描述数据之间的关系。
因此,深入研究矩阵的相关算法和应用,对于提高计算机科学和数据分析领域的研究水平具有重要意义。
2. 研究目的本次研究的主要目的是掌握矩阵分析的基本概念和相关算法,并将其应用于实际问题中,进一步提高对于矩阵分析的理解和应用能力。
3. 研究内容3.1 矩阵分解矩阵分解是矩阵分析中的一项重要任务,它将一个矩阵分解成为多个小的矩阵,从而更方便的进行处理。
常见的矩阵分解算法有:1.奇异值分解(SVD)2.QR分解3.LU分解4.特征值分解3.2 矩阵重构矩阵重构是指将矩阵进行转换、组合等操作,旨在从不同的角度探索和发现矩阵的内在规律。
常见的矩阵重构算法有:1.矩阵乘法2.矩阵转置3.矩阵拼接4.矩阵切片3.3 矩阵应用矩阵在各个领域的应用非常广泛,下面列举几个常见的应用场景:1.图像处理:将图像转化成为矩阵,对其进行矩阵分解、矩阵重构等操作,从而实现图像降噪、图像识别等功能。
2.推荐系统:利用矩阵分解的方法将原始数据转化为矩阵,再对其进行推荐系统的处理,从而为用户提供更好的推荐服务。
3.聚类分析:将大量数据转化为矩阵,从而利用聚类算法对其进行分析,发现数据之间的关系,进一步深入研究数据的内在规律。
4. 研究通过对于矩阵分解、矩阵重构、矩阵应用等领域的研究,我们可以得到以下:1.奇异值分解、QR分解、LU分解、特征值分解等矩阵分解算法各有优缺点,在实际应用中应该根据具体情况选用不同的算法。
2.矩阵乘法、矩阵转置、矩阵拼接、矩阵切片等矩阵重构算法可以帮助我们从不同的角度分析和处理矩阵,从而深入研究矩阵的内在规律。
3.矩阵在图像处理、推荐系统、聚类分析等领域有着广泛的应用,掌握矩阵分析算法可以帮助我们更好地解决实际问题。
中科院矩阵分析与应用大作业实现LU分解QR分解Householder reduction、Givens reductionMatlab 代码:function [] =j uzhendazuoyeA=input ('请输入•个矩阵A=');2 Gram-Schmidt 分解3 Householder reduction 4x=input (*请输入序号1 LU分解Givens reduction: 1);if (>:==!)壮mmm分解mm%%disp('PA=LU1)m=size(A,1); %nt等于矩阵A的行数n=size(A,2); %n等于矩阵A的列数if (m==n) % 刊斯NA是不足方阵% 如果矩阵A不是方阵那么就输出"error"U=A; %把矩阵至賦值给矩阵uL=zeros(n); %先将L设为单位阵P=eye(n); %首先将交换矩阵P设为单位矩阵for j =1:n-1for i=j +1:nif (U(j, j)-=0) %判断主元元素是否不为0L(i z j)=U(i z j) /U(j z j);U(i f :)=U(i, :)-U(j, j)/U(j z j); % U(j, j)为主元元素elsea=j+l;% 令 a 等于j + 1while ( (U (a, j ) ==0) && (a<n) ) %判断主元元素所刘•的卜行九索, 上0, a是否小于na=a+l; %寻找下•个元素endtemp=U(j, :); %判断主元元素所在列(除主元元素外)第个不为零的元素的所在行与主元元素所在行进行行交换U(j, : )=U(a, : ; % U两行交换位置U(a, :)=temp ;m=L(j,:);L(j, :)=L(a, :); % L矩阵两行交换位置L (a, : ) =m;q=P(jr :);P(j,:)=P(a,:); %交换矩阵的两行交换P(a,:)=q;L(i z j)=U(i z j)/U(j r j);U(i, :)=U(i, :)-U(j, :)*U(i f j)/U(j r j);endendend for k=l:nL(k,k)=l; %把L矩阵的对角线赋值为1endL %输出下三角矩阵u %输岀上三角矩阵up %输出交换矩阵pA=inv(P)*L*Uelse disp('error 1)endendif (x==2) %%判断如果那么将执行sohmid分解%%**************Gram-Schmidc 正交分解mmdisp(,A=Q*R,)Q=zeros (size (A, 1) , size (A z 2) ) ; %% 先把Q 设为全零矩阵R=zeros(size(A,2)); %% R设置为全零矩阵a=A(:,1);%% 把第•列赋值给aR(1, 1)=norm(a); %% 求第•列列向量的模值a=a/norm(a); %% 求第•列列向量的单位向量Q(:,l)=a; %% 把a賦值给Q的第•列for j=2:size(A z2)m=zeros (size (A, 1),1); %% 取 A 的第•列for i=l:j-1R(i, j)=Q(:zi) A(:, j); %% q的转置乘以A的第j列向量m=m+R(i z j ) *Q ( : z i); %% q的转置乘以A的列向量endQ ( : , j ) =A (:,j ) -m; %%企的第:列减去q(i)和A (: f j )的内积和R( jr j) =norm (Q ( :z j ));%% 把Q的列向量的模值赋值给R (j , j )Q ( :, j ) =Q ( : / j ) /norm (Q (:, j)); %% 把Q 的列向量的单位化endQ%%输岀正交矩阵QR %%输岀上三角矩阵Rendif(x==3) %%判断如果x=3>那么将进彳亍Householder reduction^%************Householder reduction***********%%disp('P*A=T f)R=zeros(size(A,1)); %%把R设置为矩阵维数等于矩阵的行数的全零方阵Rl = zeros (size(A,1)); %%把R1设为矩阵维数等于矩阵的行数的全零方阵M=A; %%将A赋给MP=eye(size(M,1)); %%先将E矩阵设为维数等于M的单位矩阵for 1=1:(size(M z1)-1)U=A; %%将A賦值给UU(l z 1)=U(1Z 1) -norm (U(:, 1)); 锂将U的第•列的第彳了元素减去U的; ]列向量的模值R=eye(size(U,1))-2*U(:,1)*U(:,1)f/(U(:z l) ** U(:z l));%%I-2*U(:,1)*U(:,1) f/(U(:, 1) U(:z 1)A=R*A;%% R乘以入賦值给AA=A (2 : size (A, 1) , 2 : size (A, 2) ) ; %% 取g 的 /矩阵if (size (R, 1) Size (M, 1) ) %%判断矩阵R的行数是否小于矩阵M的行数.如果小于进行下步:S=eye (size (M, l)-size (R, 1)); 魁将S设置为维数等于矩阵M的行数减夫妙阵R的行数维的单位矩阵V=zeros (size (M, 1) -size (R, 1) , size (R, 1) ) ; %% 将V 设置为矩阵彳亍数等M 的行数减去R的行数,列数等于矩阵R的列数F=zeros (size (R, 1) z size (M, 1) -size (R z 1) ) ; %% 将 F 矩阵设置行数等于R 的行数,列数等于矩阵M的行数减去矩阵R的行数R1=[S V;F R]; 昭将S V F D合成矩阵R1else R1=R; %%如果不满矩阵R的行数小尸矩阵M的行数,则把R赋值给R1endP=R1*P;endp %% 输出正交矩阵pT=P*M %% 输出矩阵T,如果矩阵M的 f J•列数的话,T为上三角矩阵endif (x==4) “判断瓦的值是笛需于4,等于4则进行Givzsreduction***★*★★***Givens reduction**********%%disp(,P*A=R,)w=size(A,1); %% w等于矩阵A的行数U=A; %% 将A赋值给Ur=eye(w);%% 将r设置为维数为w的单位矩阵for k=l:w-1m=eye(size(A,1)); %% 将m设置为维数等于A的行数单位矩阵for i=2:size(A z l)P=eye(size(A,1));a=0; $$将&是设置为0,方便求第•列前i个元素的平方和for j=l:i u=sqrt(a); a=a+A(j z l)A2;ends=sqrt(a);%%将第-列前i个元素的平方开根P(l z l)=u/s; %%将u/s賦值给旋转矩阵P的第•行的第•列P(i,i)=u/s; %%将U/S賦值给旋转矩阵P的第i行和第i列P(i z l)=-A(i z l)/s;%%将-A(i,D赋值非P的第i行的第•列P(l z i)=A(i,l)/s;%%将A(i z i)赋值给P的第•行的第i列m=P*m; %% P乘以矩阵m并賦值给mendA=m*A; %%矩阵赋值给AA=A (2 : size (A, 1),2: size (A, 2) ) ; %% A 的/妙阵if (size(m z1)<w) %%如果矩阵in的行数小于wc=eye(w-size(m,1)); 将o设置为维数等于w-矩阵m的行数的单位矩阵d=zeros(w-size(m,1),size(m,1));v=zeros(size(m,1),w-size(m,1));w=size(A,1); %% w等于矩阵A的行数P= [c, d; v z m]; %%进行和并矩阵elsep=r endr=p*r; endP=rR=P*U end %%如果不满足矩阵m的行数小于w,则把%%将r赋值给正交矩阵P,并输出Pend赋值给p %%输出矩阵R,若R的行•数等于列数的话,R为上三角矩阵。
矩阵的代数性质1.矩阵是线性映射的表示:线性映射的相加表示为矩阵的相加线性映射的复合表示为矩阵的相乘2.矩阵是一种语言,它是表示复杂系统的有力工具。
学习矩阵理论的重要用途之一就是学会用矩阵表示复杂系统的关系,培养根据矩阵推演公式的能力是学习矩阵论的目的之一。
定义一个矩阵有几种方式:可以通过定义矩阵的每一个元素来定义一个矩阵,也可以通过矩阵具有的性质来定义一个矩阵。
如:对称矩阵可以定义为:a ij=a ji也可以定义为: (x, Ay)=(Ax,y),还可以定义为:Ax= f(x), 其中f(x)=x T Ax/2,即它对向量x 的作用相当于函数f(x)在x处的梯度。
3. 矩阵可以表示为图像矩阵的大小可以表示为图像。
反之,一幅灰度图像本身就是矩阵。
图像压缩就是矩阵的表示问题. 这时矩阵相邻元素间有局部连续性,既相邻的元素的值大都差别不大。
4. 矩阵是二维的(几何性质)矩阵能够在二维的纸张和屏幕等平面媒体上表示,使得用矩阵表示的问题显得简单清楚,直观,易于理解和交流。
很多二元关系很直观的就表示为矩阵,如关系数据库中的属性和属性值,随机马尔科夫链的状态转移概率矩阵,图论中的有向图或无向图的矩阵表示等。
第一章:线性空间和线性变换1.线性空间集合与映射集合是现代数学最重要的概念,但没有严格的定义。
集合与其说是一个数学概念,还不如说是一种思维方式,即用集合(整体)的观点思考问题。
整个数学发展的历史就是从特殊到一般,从个体到整体的发展历程。
集合的运算及规则,两个集合的并、交运算以及一个集合的补;集合中元素没有重合,子集,元素设S,S'为集合映射:为一个规则σ:S → S', 使得S中元素a和S'中元素对应,记为a'=σ(a),或σ:a→a'.映射最本质的特征在于对于S中的任意一个元素在S'中仅有唯一的一个元素和它对应。
映射的原象,象;映射的复合。
满射,单射,一一映射。
矩阵分析在通信中的应用•在过去的15年左右,矩阵分析这一工具在通信理论与系统中得到了广泛应用•为什么?“传统”通信(~before 2000)“现代”通信(~after 2000)•本质上,现代通信系统必须处理高维信号侧重于单点对单点强调多用户单载波多载波单天线多天线多维线性参数估计应用:信道估计与符号估值•考虑如上图所示的一个多径信道•首先发送长度为N的已知训练序列:{s(1),…,s(N)};接收端收到{y(1),…, y(N)}•如何对收到的长度为N的接收向量进行线性矩阵运算,获得对信道向量c的“最优”估值?•在获得信道向量c的估值后,发送端继续发送长度为M的未知数据序列:{x(1),…,x(M)};接收端收到{y(1),…,y(M)}•如何对收到的长度为M的接收向量进行线性矩阵运算,获得对数据向量x 的“最优”估值?多维线性参数估计应用:线性均衡•继续考虑上一页提到的数据估值问题,但是…•加入一个限制:接收端必须符合上图所示的“线性均衡器”•如何决定线性均衡器各个“分支”的系数,获得对数据向量x的“最优”估值?多天线系统(MIMO)•从单天线系统(SISO)演进到多天线系统(MIMO),是过去20多年通信领域的最重要技术发明之一•对MIMO系统的研究,使得矩阵分析理论在通信界成为“必备”的知识•下面的这个信号模型是“无数”MIMO论文的基础Y=HX+Z多天线系统(MIMO):单用户信道容量Y=HX+Z•考虑一个单用户MIMO信道–发送端M根天线,接收端N根天线–信道矩阵H的维数是N*M–发送端总功率受限或各根天线功率受限•若信道矩阵H给定,信道容量如何获得?–收端精确知道H,发端不知道H–收发端均精确知道H–收发端均不知道H•若信道矩阵H服从某一分布,信道容量如何定义,如何获得?多天线系统(MIMO):多用户信道容量Y=[H1, H2] [X1;X2]+Z•上行多用户MIMO信道–2个用户–每个用户发送端M根天线–基站接收端N根天线–发送端总功率受限[Y1;Y2]=[H1;H2] X+Z•下行多用户MIMO信道–2个用户–基站发送端M根天线–每个用户接受端N根天线–发送端总功率受限多天线系统(MIMO):接收机设计Y=HX+Z•考虑一个单用户MIMO信道–发送端M根天线,接收端N根天线–信道矩阵H的维数是N*M–发送端总功率受限或各根天线功率受限–接收端精确知道信道矩阵H•接收端如何获得对X的“最佳”估值?•接收端如何获得对X的“最佳”线性估值?•什么样的接收机估值处理能够做到不损失信道容量?多天线系统(MIMO):ZF与ZF-SIC接收机Y=HX+Z•ZF接收机–在对每个符号估值的时候,确保其它符号对其的干扰为零(zero-forcing)–通过对矩阵H做QR分解Y=HX+Z=QRX+ZQ H Y=RX+Q H ZR-1Q H Y=X+R-1Q H Z–X的每个符号可以独立做估值•ZF-SIC接收机–也叫作V-BLAST–对每一个符号做ZF–随后将此符号在Y中的贡献减掉,再对下一个符号做ZF多天线系统(MIMO):MMSE与MMSE-SIC接收机Y=HX+Z•(线性)MMSE接收机–寻找一个M*N维的矩阵G,使得GY最小化均方误差–推导过程需要利用到正交准则•MMSE-SIC接收机–对每一个符号做MMSE–随后将此符号在Y中的贡献减掉,再对下一个符号做MMSE–MMSE-SIC接收机与信道容量的关系多天线系统(MIMO):码间串扰信道Revisit•接收端符号表示•在发端做一个cyclic prefix处理(增加的长度为L-1)•在收端,将前L-1个符号丢掉,只保留随后的N个符号•可以证明,对于这个系统,发端的傅里叶逆变换与收端的傅里叶变换一起,可以对角化任何信道,从而达到完全消除码间串扰的目的–OFDM系统•不需要做时域均衡多天线系统(MIMO):预编码矩阵设计Y=HX+Z•发送端知道信道H•如何设计一个线性矩阵F,来“预编码”需要发送的符号向量s?•随着优化目标的不同,对应的预编码矩阵也不同–保留信道容量–对角化信道–优化成对出错概率–单用户vs多用户•向量信道的最大比(MRT)发送预编码•ZF预编码•其它预编码多天线系统(MIMO):最优空时分组码设计Y=HX+Z•发送端不知道信道H•如何设计一个线性矩阵X,来“预编码”需要发送的符号向量s?–X必须与H无关,仅与s有关•最早的空时分组码:Alamouti Code(1998)•随后出现了多种基于矩阵代数的空时分组码•着重讨论最优设计准则与在有反馈情况下的分组码设计。
LU分解说明文档
1.概述
在附件中的LU.rar文件中包含3份.m文件分别为LUfactor.m、LUFull.m、LUPart.m。
其中LUfactor为执行文件,其余为自己编写的函数。
用matlab打开LUfactor.m即可进行LU分解。
LUFull.m为完全主元法实现函数。
测试矩阵可为:[222;477;61822]。
LUPart.m为部分主元法实现函数。
测试矩阵:[12-34;4812-8;2321;-3-11 -4]和[234;467;825]
2.实现过程
(1)要求使用者从外部输入需要LU分解的方阵A;
(2)判断A是否为方阵;
(3)判断A是否奇异;
(4)判断A顺序主子式是否全部非0;
(5)若顺序主子式全部非0,调用函数LUFull使用完全主元法进行LU分解。
LUFull函数主要使用Dolittle公式实现算法。
详见源码。
(6)若顺序主子式含0,调用函数LUPart使用部分主元法进行LU分解。
算法实现的是基本的完全主元法计算过程。
详见源码。
一、填空
1、矩阵的LDU 分解,很简单
2、已知2A A =,求A I e
+α
3、求非零奇异值
二、 三、证明2
22||||||||||||F A A A +=为矩阵范数,且与|| 2||相容。
四、线性子空间的证明题,和08年基本相同,有小的变化,但只要把线性空间的基本概念和计算掌握就行了
五、计算题:
(1)求Hermite 标准型,FG ,A +
(2)Ax = b,求x
以下内容不在期末考试范围内:
第一章:矩阵相似于Jordan标准型的计算;
第二章:近似逆矩阵的误差-----逆矩阵的摄动;
第三章: 3.5节矩阵函数的一些应用;
第四章:§4.2中的“三、矩阵与Hessenberg 矩阵的正交相似问题”
第五章:§5.1中从定理5.11(Ostrongski theorem 1)起至本节末的内容;§5.3中“二、广义特征值的极大极小原理”的所有内容;
第六章:§6.2中“三、Moore-Penrose逆的等价定义”,§6.3中“三、四、五、六和七”
的内容;从§6.5到本章末。
矩阵奇异值分解在图像压缩上的应用摘要矩阵的奇异值理论提出至今己经有很长的一段时间。
奇异值分解理论由Beltrami和Jordan于十九世纪七十年代提出至今,由于其内在的一些良好特性,奇异值分解正成为应用数学和数学模型领域的一个极有价值的工具。
奇异值分解在很多领域得到了应用,它在数据挖掘及搜索引擎中被用来对数据库文件进行规类,近年来,它在图像压缩方面的应用也越来越受到相关学者的重视。
关键字:图像压缩;奇异值分解第一章总论数字图像处理技术中的数字图像压缩,或者叫图像编码。
二维形式呈现的数字图像,其信息量很大,给传输、处理、储存、显示等都带来了不少的问题。
另一方面,图像中又有很多冗余信息,根据香农(Shannon)的率失真理论。
无论在传输或者储存时,都可对数字图像进行一定方式编码,删除其中冗余信息,实现不失真压缩,或在容许失真限度内进行有失真压缩,以换取更大的压缩率。
对于供人观看的图像,如电视信号,这时人是通信系统中的一环,人的视觉特征,如掩盖效应,对灰度分辨率和空间分辨率的有限性等,也可以用来为压缩服务。
数字图像以数据矩阵形式储存在存储器中,这就使得通过操作数据矩阵的方式压缩图像成为可能。
事实上矩阵的奇异值本身具有可降维的特性,若能合理的利用矩阵奇异值的这一特性,SVD方法在图像压缩领域必将会有广阔的应用前景。
矩阵的奇异值分解(SVD)目前在信号处理、模式分析等领域得到了较为广泛的应用。
由于数字图像矩阵通常是由数据量较大的阵列矩阵所构成,这就给基于SVD变换的算法构造添加了很大的难度,所以SVD变换目前在数据压缩领域得到的应用还不是很多,从SVD变换算法的研究着手,研究大矩阵奇异值的分布情况以及他们在图像恢复时所起到的作用,并在此基础上展开对SVD变换算法在数据压缩领域应用的研究,构造能将SVD变换实际应用到数据压缩领域的快速、高效的算法是十分必要的。
第二章 矩阵奇异值分解理论2.1奇异值分解及其解释2.1.1奇异值分解奇异值分解最早由Beltrami 在1873年针对实正方矩阵提出来的。
矩阵分析与应用2篇【矩阵分析与应用】第一篇:线性代数的重要性矩阵是数学中一个重要的概念,它包含了线性代数、微积分、统计学和物理学等领域的知识。
线性代数是一门关于向量空间和线性映射的数学学科,是现代数学及其应用的一个重要组成部分。
线性代数的基本概念就是矩阵和向量,这些基本概念可以通过矩阵的运算和变换来解决许多实际问题。
例如,在机器学习领域,矩阵计算可以实现反向传播算法,用于优化神经网络的参数。
在图像处理领域,矩阵计算可以实现图像变换和处理。
在经济学领域,矩阵计算可以实现数据挖掘和预测。
矩阵的运算和变换通常包括加法、乘法、转置、求逆等操作,这些操作可以通过矩阵的行、列和元素来进行计算。
例如,矩阵的乘法可以用行列式的方式计算,或者用列向量组成的矩阵的乘积来计算。
矩阵的转置可以将矩阵的行和列互换,用于保持矩阵的结构特性。
因为矩阵具有简单、统一和易于计算的特性,它在各种学科中得到了广泛应用。
无论是数值计算还是图像处理,矩阵都是一种非常重要且必不可少的数学工具。
在面对复杂的实际问题时,熟练掌握矩阵分析和应用能够极大地提高问题求解的效率和准确性。
同时,也有助于提高数学素养和创新能力,为未来的学习和实践奠定坚实的基础。
【矩阵分析与应用】第二篇:矩阵在数据分析中的应用矩阵在数据分析中具有非常重要的作用。
在数据分析中,矩阵用于描述数据集合和变换,它可以表示数据的结构、模式和趋势,也可以实现数据的降维处理和分类。
数据分析在生命科学、物理学、化学、经济学等领域中得到广泛应用,矩阵在这些领域中发挥着重要的作用。
矩阵在数据分析中最常用的操作是矩阵乘法,即将一个矩阵和另一个矩阵相乘得到新的矩阵。
矩阵乘法可以用于计算各种数据分析工具的核心算法,例如主成分分析(PCA)和线性判别分析(LDA)。
这些算法可以将数据的维度降低到更低的维度,从而提高数据处理的效率和准确性。
另一个重要的矩阵操作是矩阵奇异值分解(SVD),它可以将一个矩阵拆分成三个矩阵的乘积。
中科院矩阵分析与应用大作业
实现LU分解QR分解Householder reduction、Givens reduction
Matlab 代码:
function [] =j uzhendazuoye
A=input ('请输入•个矩阵A=');
2 Gram-Schmidt 分解
3 Householder reduction 4
x=input (*请输入序号1 LU分解
Givens reduction: 1);
if (>:==!)
壮mmm分解mm%%
disp('PA=LU1)
m=size(A,1); %nt等于矩阵A的行数
n=size(A,2); %n等于矩阵A的列数
if (m==n) % 刊斯NA是不足方阵
% 如果矩阵A不是方阵那么就输出"error"
U=A; %把矩阵至賦值给矩阵u
L=zeros(n); %先将L设为单位阵
P=eye(n); %首先将交换矩阵P设为单位矩阵
for j =1:n-1
for i=j +1:n
if (U(j, j)-=0) %判断主元元素是否不为0
L(i z j)=U(i z j) /U(j z j);
U(i f :)=U(i, :)-U(j, j)/U(j z j); % U(j, j)为主元元素
else
a=j+l;% 令 a 等于j + 1
while ( (U (a, j ) ==0) && (a<n) ) %判断主元元素所刘•的卜行九索, 上0, a是否小于n
a=a+l; %寻找下•个元素
end
temp=U(j, :); %判断主元元素所在列(除主元元素外)第个
不为零的元素的所在行与主元元素所在行进行行交换
U(j, : )=U(a, : ; % U两行交换位置
U(a, :)=temp ;
m=L(j,:);
L(j, :)=L(a, :); % L矩阵两行交换位置
L (a, : ) =m;
q=P(jr :);
P(j,:)=P(a,:); %交换矩阵的两行交换
P(a,:)=q;
L(i z j)=U(i z j)/U(j r j);
U(i, :)=U(i, :)-U(j, :)*U(i f j)/U(j r j);
end
end
end for k=l:n
L(k,k)=l; %把L矩阵的对角线赋值为1
end
L %输出下三角矩阵
u %输岀上三角矩阵u
p %输出交换矩阵p
A=inv(P)*L*U
else disp('error 1)
end
end
if (x==2) %%判断如果那么将执行sohmid分解%%**************Gram-Schmidc 正交分解mm
disp(,A=Q*R,)
Q=zeros (size (A, 1) , size (A z 2) ) ; %% 先把Q 设为全零矩阵
R=zeros(size(A,2)); %% R设置为全零矩阵
a=A(:,1);%% 把第•列赋值给a
R(1, 1)=norm(a); %% 求第•列列向量的模值
a=a/norm(a); %% 求第•列列向量的单位向量
Q(:,l)=a; %% 把a賦值给Q的第•列
for j=2:size(A z2)
m=zeros (size (A, 1),1); %% 取 A 的第•列
for i=l:j-1
R(i, j)=Q(:zi) A(:, j); %% q的转置乘以A的第j列向量
m=m+R(i z j ) *Q ( : z i); %% q的转置乘以A的列向量
end
Q ( : , j ) =A (:,j ) -m; %%企的第:列减去q(i)和A (: f j )的内积和
R( jr j) =norm (Q ( :z j ));%% 把Q的列向量的模值赋值给R (j , j )
Q ( :, j ) =Q ( : / j ) /norm (Q (:, j)); %% 把Q 的列向量的单位化
end
Q%%输岀正交矩阵Q
R %%输岀上三角矩阵R
end
if(x==3) %%判断如果x=3>那么将进彳亍Householder reduction
^%************Householder reduction***********%%
disp('P*A=T f)
R=zeros(size(A,1)); %%把R设置为矩阵维数等于矩阵的行数的全零方阵
Rl = zeros (size(A,1)); %%把R1设为矩阵维数等于矩阵的行数的全零方阵
M=A; %%将A赋给M
P=eye(size(M,1)); %%先将E矩阵设为维数等于M的单位矩阵for 1=1:(size(M z1)-1)
U=A; %%将A賦值给U
U(l z 1)=U(1Z 1) -norm (U(:, 1)); 锂将U的第•列的第彳了元素减去U的; ]列
向量的模值
R=eye(size(U,1))-2*U(:,1)*U(:,1)f/(U(:z l) ** U(:z l));%%
I-2*U(:,1)*U(:,1) f/(U(:, 1) U(:z 1)
A=R*A;
%% R乘以入賦值给A
A=A (2 : size (A, 1) , 2 : size (A, 2) ) ; %% 取g 的 /矩阵
if (size (R, 1) Size (M, 1) ) %%判断矩阵R的行数是否小于矩阵M的行数.
如果小于进行下步:
S=eye (size (M, l)-size (R, 1)); 魁将S设置为维数等于矩阵M的行数减夫妙
阵R的行数维的单位矩阵
V=zeros (size (M, 1) -size (R, 1) , size (R, 1) ) ; %% 将V 设置为矩阵彳亍数等M 的行数减去R的行数,列数等于矩阵R的列数
F=zeros (size (R, 1) z size (M, 1) -size (R z 1) ) ; %% 将 F 矩阵设置行数等于R 的行数,列数等于矩阵M的行数减去矩阵R的行数
R1=[S V;F R]; 昭将S V F D合成矩阵R1
else R1=R; %%如果不满矩阵R的行数小尸矩阵M
的行数,则把R赋值给R1
end
P=R1*P;
end
p %% 输出正交矩阵p
T=P*M %% 输出矩阵T,如果矩阵M的 f J•列数的话,T为上
三角矩阵
end
if (x==4) “判断瓦的值是笛需于4,等于4则进行Givzs
reduction
***★*★★***Givens reduction**********%%
disp(,P*A=R,)
w=size(A,1); %% w等于矩阵A的行数
U=A; %% 将A赋值给U
r=eye(w);%% 将r设置为维数为w的单位矩阵
for k=l:w-1
m=eye(size(A,1)); %% 将m设置为维数等于A的行数单位矩阵for i=2:size(A z l)
P=eye(size(A,1));
a=0; $$将&是设置为0,方便求第•列前i个元素的平方和for j=l:i u=sqrt(a); a=a+A(j z l)A2;
end
s=sqrt(a);%%将第-列前i个元素的平方开根
P(l z l)=u/s; %%将u/s賦值给旋转矩阵P的第•行的第•列
P(i,i)=u/s; %%将U/S賦值给旋转矩阵P的第i行和第i列
P(i z l)=-A(i z l)/s;%%将-A(i,D赋值非P的第i行的第•列
P(l z i)=A(i,l)/s;%%将A(i z i)赋值给P的第•行的第i列
m=P*m; %% P乘以矩阵m并賦值给m
end
A=m*A; %%矩阵赋值给A
A=A (2 : size (A, 1),2: size (A, 2) ) ; %% A 的/妙阵
if (size(m z1)<w) %%如果矩阵in的行数小于w
c=eye(w-size(m,1)); 将o设置为维数等于w-矩阵m的行数的单位矩阵d=zeros(w-size(m,1),size(m,1));
v=zeros(size(m,1),w-size(m,1));
w=size(A,1); %% w等于矩阵A的行数
P= [c, d; v z m]; %%进行和并矩阵else
p=r end
r=p*r; end
P=r
R=P*U end %%如果不满足矩阵m的行数小于w,则把%%将r赋值给正交矩阵P,并输出P
end
赋值给p %%输出矩阵R,若R的行•数等于列数的话,R为上三角矩阵。