资源简介
对于矩阵A,根据不同的参数number实现不同方法的矩阵分解:高斯消元法的LU分解,基于Gram-Schmidt、Householder、Givens 的QR分解
代码片段和文件信息
function [QR]=Reduction(Anumber)
if number==1
[QR]=LUcomposition(A);
elseif number==2
[QR] = GramSchmidt(A);
elseif number==3
[QR] = HouseHolder(A);
elseif number==4
[QR]=Givens(A);
elseif error(‘not valid number‘);
end
end
function [LU]=LUcomposition(A) %A=[2 2 2;4 7 7;6 18 22] A=[10 20 30;20 45 80;30 80 171]
B=A;
[mn]=size(A);
if m~=n
error(‘不是方阵!‘);
end
if rank(A)~=n
error(‘奇异矩阵无法进行LU分解!‘); %检测参数异常停止程序
end
L=eye(n);
for i=1:n-1
if abs(A(ii)) disp(‘zero pivot encountered--use PA=LU ‘);
[LU]=partialLUDecomposition(Bn);
return;
end
for j=i+1:n
L(ji)=A(ji)/A(ii);
A(j:)=A(j:)-(A(ji)/A(ii))*A(i:);
end
end
U=A;
disp(‘-----LU Reduction----- ‘);
end
function [LU]=partialLUDecomposition(Am) % A=[1 2 -3 4;4 8 12 -8;2 3 2 1;-3 -1 1 -4]
L=zeros(m);
P=eye(m);
for i=1:m-1
index=find(abs(A(i:mi))==max(abs(A(i:mi))));
k=index+i-1;
if k~=i
L([i k]:)=L([k i]:);
A([i k]:)=A([k i]:);
P([i k]:)=P([k i]:);
end
for j=i+1:m
L(ji)=A(ji)/A(ii);
A(j:)=A(j:)-(A(ji)/A(ii))*A(i:);
end
end
U=A;
L=L+eye(m);
disp(‘--partial LU Reduction---‘);
end
% 对m*n维的矩阵A具有线性无关列,进行基于Gram-Schmidt的QR分解:A=QR,其中Q为m*n维正交矩阵,R为n*n维上三角矩阵且对角线元素大于0
function [QR] =GramSchmidt(A) %A=[0 -20 -14;3 27 -4;4 11 -2]
[m n] = size(A);
if rank(A)~=n
error(‘该矩阵无法进行进行基于Gram-Schmidt的QR分解!‘); %检测参数异常停止程序
end
Q = zeros( m n );
R = zeros( n n );
R(11)= norm( A( : 1) );
Q(: 1) = A( : 1)/R( 1 1 );
for k = 2: n
for j = 1: k - 1
R( j k ) = Q( : j )‘ * A( : k);
end
q = zeros( m 1 );
for j = 1: k - 1
q = Q( : j) * R( j k ) + q;
end
R( k k ) = norm( A( : k ) - q );
Q( : k ) = ( A( : k) - q ) / R( k k );
end
disp(‘---Gram-Schmidt Reduction---‘);
end
%%houseHolder进行QR分解
function [QR]=HouseHolder(A)
[m n] = size(A); % m- number of rows n- number of columns
if m > n
num = n;%the number of housholder matrix
else
num = m - 1;
end
a=A;
for i=1:num
if i==1
u=a(:1)-norm(a(:1))*eye(m1);
R=eye(m)-2*(u*u‘)/(u‘*u);
Q=R;
R=R*A;
fR=R;
else
a=R(i:mi:n);
u=a(:1)-norm(a(:1))*eye(m-i+11);
R1=eye(m-i+1)-2*(u*u‘)/(u‘*u);
R=[eye(i-1) zeros(i-1m-i+1);zeros(m-i+1i-1)R1];
Q=Q*R;
R=R*fR;
fR=R;
end
end
disp(‘------Householder Reduction------‘);
end
function [QR]=Givens(A)%A是
[mn]=size(A); %m行数n列数 A=[1 19 -34;-2 -5 20;2 8 37]
R=A;
Q=eye(m);
for i=1:n-1
for j=i+1:m
x=R(:i);
G=givensmatrix(xij);
%Q=Q*G‘;
Q=G*Q;
R=G*R;
end
end
Q=Q‘;
disp(‘----Givens Reduction----‘);
end
function G=givensmatrix(xij)
xi=x(i);
xj=x(j);
r=sqrt(xi^2+xj^2);
c=x
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3187 2018-12-26 00:16 矩阵分解\Reduction.m
文件 43759 2018-12-26 00:36 矩阵分解\说明文档.docx
相关资源
- 中科大组合数学10-17年试卷
- 中国科学技术大学-算法设计与分析
- 中科大自然语言处理考试试卷.zip
- 中科大10年高级图形图像处理试卷
- 中科大组合数学期末试卷
- 2020最新中科大组合数学引论课后答案
- 1.1中科大+上交电院+上交密院.pdf
- 中科大IT英语人脸识别ppt答辩和配套演
- 中科大计算机模式识别分类器作业
- 微机原理与接口技术课后习题答案中
- 中科大曾凡平老师课网络安全题库准
- 中科大6系实验室介绍
- 中科大数据结构与数据库课件
- DSPII计算机作业2.pdf
- 中科大2015年算法导论期末考试重点
- 中科大微波技术基础习题
- 中科大软院软件测试4
- 统计学习基础—中科大-卿来云
- 中科大自动控制原理考研真题.zip
- 中科大高级数据库数据库实现,期末
- 中科大csapp实验4 perflab-handout 代码优化
- 中科大robotcup 2d底层整体代码介绍
- 无线自组织网络论文.rar
- 中科大软院软件系统测试实验报告2
- ustc组合数学试题
- 现代信号处理 姚天任华中科大出版
- 中科大数据库实现代码
- 保研中科大、北大、清华学长的保研
- 华中科大《电机学》课后习题答案
- 中科大人工智能总结+19年春季原题.
评论
共有 条评论