中科院矩阵分析与应用大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 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