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

合集下载
相关主题
  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

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

相关文档
最新文档