中科院矩阵分析与应用大作业

合集下载

中科院矩阵分析与应用大作业

中科院矩阵分析与应用大作业

中科院矩阵分析与应用大作业实现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。

中科院矩阵分析chapt3

中科院矩阵分析chapt3

矩阵分析及其应用 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.矩阵在图像处理、推荐系统、聚类分析等领域有着广泛的应用,掌握矩阵分析算法可以帮助我们更好地解决实际问题。

中科院学习课件 矩阵分析与应用 9 Determinants

中科院学习课件 矩阵分析与应用 9 Determinants

Since σ (1, 2) = +1 and σ (2, 1) = −1, we obtain the familiar formula a11 a12 a21 a22 = a11 a22 bin | UCAS
7 / 23
Determinants | Determinants
Li Bao bin | UCAS 2 / 23
Determinants | Introduction
These men had something else in common — their ideas concerning the solution of linear systems were never adopted by the mathematical community of their time, and their discoveries quickly faded into oblivion. Eventually the determinant was rediscovered, and much was written on the subject between 1750 and 1900. During this era, determinants became the major tool used to analyze and solve linear systems, while the theory of matrices remained relatively undeveloped. The study and use of determinants eventually gave way to Cayley.s matrix algebra, and today matrix and linear algebra are in the main stream of applied mathematics, while the role of determinants has been relegated to a minor backwater position. Nevertheless, it is still important to understand what a determinant is and to learn a few of its fundamental properties. Our goal is not to study determinants for their own sake, but rather to explore those properties that are useful in the further development of matrix theory and its applications.

中科院学习课件 矩阵分析与应用 6lineartransform

中科院学习课件 矩阵分析与应用 6lineartransform

Li Bao bin | UCAS
3 / 34
Linear Transformations | Introduction
If V is the space of all continuous functions from R into R, then the x mapping defined by T(f ) = 0 f (t)dt is a linear operator on V because
Li Bao bin | UCAS
11 / 34
Linear Transformations | Introduction
For T ∈ L(U , V ) and L ∈ L(V , W ), the composition of L with T is defined to be the function C : U → W such that C(x) = L (T(x)). This composition denoted by C(x) = LT, is also a linear transformation because C(αx + y) = L (T(αx + y)) = L (αT(x) + T(y)) = αL (αT(x)) + L (T(y)) = αC(x) + C(y). If B, B and B are bases for U , V and W , respectively, then C must have a coordinate matrix representation with respect to (B, B ). So it’s only natural to ask how [C]BB is related to [L]B B and [T]BB : [C]BB = [L]/ 34

中科院计算机算法设计与分析各章作业+历年习题

中科院计算机算法设计与分析各章作业+历年习题

5.下面那些规则是正确的?为什么? 1). f (n) O( F (n)), g (n) O(G(n)) f (n) / g (n) O( F (n) / G(n)) ;错 2). f (n) O( F (n)), g (n) O(G(n)) f (n) / g (n) ( F (n) / G(n)) ;错 3). f (n) O( F (n)), g (n) O(G(n)) f (n) / g (n) ( F (n) / G(n)) ;错 4). f (n) ( F (n)), g (n) (G(n)) f (n) / g (n) ( F (n) / G(n)) ;错 5). f (n) ( F (n)), g (n) (G(n)) f (n) / g (n) ( F (n) / G(n)) 。错 6).
7
对顶点个数进行归纳。 当顶点数|v(D)|=2 时,因为每个点的入度和出度相等,易得构成有向 Euler 环游。 假设顶点数|v(D)|=k 时结论成立,则 当顶点数|v(D)|=k + 1 时,任取 v∈v(D).设 S={以 v 为终点的边},K={以 v 为始点的边},因为 v 的入度和出度相等,故 S 和 K 中边数相等。记 G=D-v.对 G 做如下操作: 任取 S 和 K 中各一条边 e1、e2 ,设在 D 中 e1 v1v , e2 vv2 ,则对 G 和 S 做如下操作 G G v1v2 , S S {e2} ,重复此步骤直到 S 为空。这个过程最终 得到的 G 有 k 个顶点,且每个顶点的度与在 G 中完全一样。由归纳假设,G 中 存在有向 Euler 环游,设为 C。在 G 中从任一点出发沿 C 的对应边前行,每当遇 到上述添加边 v1v2 时, 都用对应的两条边 e1, e2 代替, 这样可以获得有向 Euler 环游。 3)G 是至少有三个顶点的无向图,则 G 包含 Euler 环游等价于 G 中无奇度顶 点。 (即任意顶点的度为偶数) 。 3. 设 G 是具有 n 个顶点和 m 条边的无向图, 如果 G 是连通的, 而且满足 m = n-1, 证明 G 是树。

中科院矩阵分析与应用大作业

中科院矩阵分析与应用大作业

中科院矩阵分析与应用大作业实现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章

矩阵分析与应用 第1章

矩阵的代数性质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'中仅有唯一的一个元素和它对应。

映射的原象,象;映射的复合。

满射,单射,一一映射。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中科院矩阵分析与应用大作业
实现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为上三角矩阵。

相关文档
最新文档