当前位置: 首页 > news >正文

最新免费下载ppt模板网站深圳seo顾问

最新免费下载ppt模板网站,深圳seo顾问,自学网官网,深圳在线QR分解 给定一个mn的矩阵A,其中m≥n,即矩阵A是高矩阵或者是方阵,QR分解将矩阵A分解为两个矩阵Q和R的乘积,其中矩阵Q是一个mn的各列正交的矩阵,即QTQI,矩阵R是一个nn的上三角矩阵,其对角线元素为…

QR分解

给定一个m×n的矩阵A,其中m≥n,即矩阵A是高矩阵或者是方阵,QR分解将矩阵A分解为两个矩阵Q和R的乘积,其中矩阵Q是一个m×n的各列正交的矩阵,即QTQ=I,矩阵R是一个n×n的上三角矩阵,其对角线元素为正。

如果矩阵A是方阵,且各列线性无关,那么Q是一个正交矩阵,即QTQ=QQT=I。

QR分解有多种算法实现,包括Gram-Schmidt正交化方法、Householder变换方法和Givens旋转方法等,下面我们介绍Gram-Schmidt正交化方法和Householder变换方法,并在MATLAB平台上使用这两种算法来实现QR分解。

Gram-Schmidt算法

对于给定的n维向量a1,a2,……,an,Gram-Schmidt算法可以解决将其标准正交化的问题,即将一个线性无关的向量组转化为一个正交向量组,使得每个向量都与前面的向量正交(垂直),并且可以检验a1,a2,……,an是否是线性相关。

Gram-Schmidt算法的步骤如下:

  • 初始化n维向量q1,q2,……,qn,其中q1=a1/||a1||2。
  • 对于每个向量ai,i=2:n,进行正交化处理:qi= ai-( q1Tai)q1-…-( qi-1Tai)qi-1。
  • 如果qi=0,说明ai是a1,a2,……,ai-1的一个线性组合,可以结束算法了。
  • 否则将qi进行单位化,qi=qi/||qi||2。

如果步骤③没有结束,那么说明a1,a2,……,an是线性无关的,而且得到了一个正交向量组q1,q2,……,qn。

Gram-Schmidt算法实现的QR分解

对于给定矩阵A,其列向量线性无关,Gram-Schmidt算法实现的QR分解步骤如下:

  • 对列向量a1,a2,……,an按照Gram-Schmidt方法进行正交化。
  • 对上一步得到的正交化向量组进行单位化得到各列正交的矩阵Q。
  • 根据A=QR,QTQ=I→R=QTA,得到上三角矩阵R

MATLAB验证Gram-Schmidt算法实现QR分解稳定性

通过直观的方法来观察到Gram-Schmidt QR分解的正交性偏差,理论上通过Gram-Schmidt算法后可以得到列向量线性无关的各列正交的矩阵Q,即QTQ=I,我们可以直接计算QTQ,看看计算结果与单位矩阵I的差距

左图是QTQ的计算结果,有图是单位矩阵I,可见由于浮点数存储的舍入误差,随着k增大,积累的误差越大,矩阵Q逐渐失去正交性

clc,clear;
load MatrixA.mat;
[m,n]=size(A);
Q=zeros(m,n);
R=zeros(n,n);
%% Gram-Schmidt QR分解
for k=1:nR(1:k-1,k)=Q(:,1:k-1)'*A(:,k);  %求出R(1,K) - R(K-1,K)v=A(:,k)-Q(:,1:k-1)*R(1:k-1,k); %求出正交化向量qR(k,k)=norm(v);                 %求出R(K,K)Q(:,k)=v/R(k,k);                %单位化向量q
end
%% 正交性偏差
figure(1);
E = zeros(1,n);
for k=2:nmax = 0;for i=1:k-1temp = abs(Q(:,i)' *  Q(:,k));if temp > maxmax = temp;endendE(1,k)=max;
end    
plot(E)
%% 比较QTQ和I
QTQ=Q'*Q;
figure(2);
for i=1:nfor j=1:nscatter3(i,j,QTQ(i,j),'red');hold on;end
end
zlim([0,1]);
I=eye(n);
figure(3);
for i=1:nfor j=1:nscatter3(i,j,I(i,j),'red');hold on;end
end
zlim([0,1]);

Householder变换

Householder变换是一种镜面反射变换,householder变换矩阵为H = I - 2wwT,如何理解这个变换矩阵呢,考虑向量w,那么有:

Hw = (I - 2wwT)w = w - 2w(wTw) = - w

这说明对于平行于w的向量,householder变换的作用是将其反向,再考虑与向量w垂直的向量v,即wTv=0,那么有:

Hv = (I - 2wwT)v = v - 2w(wTv) = v

这说明对于垂直于w的向量,householder变换的作用就是对其不起任何作用,那么对于一个普通的向量v来说,平行于w的分量被householder反向,垂直于w的分量不变,那么最终的效果就是将向量v作关于法向量为w的平面的镜像对称

 

基于Householder变换的QR分解

 因为H=H-1,所以A=H1H2,…,Hn-1R,即Q= H1H2,…,Hn-1,再根据A=QR,QTQ=I→R=QTA。

再来比较一下QTQ与单位矩阵I的差距,结果如图所示,左边的是计算出来的QTQ,右边是单位矩阵I

结果QTQ和I基本一样,可见相比其他分解方法,Householder算法能够减小舍入误差的累积,提高计算结果的稳定性。此外,该算法的时间复杂度较低,具备较高的计算效率。

clc,clear;
load MatrixA.mat;
[m,n]=size(A);
Q=zeros(m,n);
R=zeros(n,n);
%% Householder QR分解
[Q,R]=qr(A);    % matlab库函数就是用的Householder
%% 正交性偏差
figure(1);
E = zeros(1,n);
for k=2:nmax = 0;for i=1:k-1temp = abs(Q(:,i)' *  Q(:,k));if temp > maxmax = temp;endendE(1,k)=max;
end    
plot(E)
%% 比较QTQ和I
QTQ=Q'*Q;
figure(2);
for i=1:nfor j=1:nscatter3(i,j,QTQ(i,j),'red');hold on;end
end
zlim([0,1]);
I=eye(n);
figure(3);
for i=1:nfor j=1:nscatter3(i,j,I(i,j),'red');hold on;end
end
zlim([0,1]);

判断矩阵是否可逆

判断矩阵是否可逆有以下几种方法:

  • 存在一个矩阵B,使得AB=BA=I,确实可逆。
  • 矩阵行列式不为0,可逆。
  • 矩阵满秩,可逆。
  • 线性方程组Ax=0只有0解,可逆。
  • 线性方程组Ax=b只有特解,可逆。

实际上如果一个方阵可以进行QR分解,那么这个方阵也是可逆的。

所以我们直接尝试对矩阵B进行QR分解,如果可以进行QR分解,那么矩阵B可逆。那么我们可以先假设矩阵B是可以进行QR分解,然后我们对矩阵B进行QR分解,显然矩阵B是可以进行QR分解的,这说明矩阵B是可逆的。

求逆

我们之前使用过高斯消元法来求解矩阵的逆,实际上也可以使用QR分解求矩阵的逆。由A = QR,QTQ = I,则A-1 = (QR)-1 = R-1Q-1 = R-1QT。

那么A-1就可以通过R-1QT得到,但是实际上我们并不需要计算R-1,让x= R-1QT,那么我们目标就是要得到x的结果,因为RR-1QT=QT,即Rx=QT,那么我们就需要求解这个线性方程组,由于R是上三角矩阵,所以直接回代就可以求出x,即求出R-1QT,即求出了A-1。

我们先用Gram-Schmidt算法实现的QR分解求解矩阵B的逆,将其与用MATLAB内置的求逆函数结果进行比较,结果如图所示,红色的圆圈是matlab内置的求逆函数计算出来的结果,绿色实心点是我们QR分解求出来的结果,如果二者重合说明计算结果相同。

可以看到基本上绿色的点都和红色的圆圈重合了,可见Gram-Schmidt算法QR分解求逆效果不错。

clc,clear;
load MatrixB.mat;
[m,n]=size(B);
Q=zeros(m,n);
R=zeros(n,n);
%% Gram-Schmidt QR分解
for k=1:nR(1:k-1,k)=Q(:,1:k-1)'*B(:,k);  %求出R(1,K) - R(K-1,K)v=B(:,k)-Q(:,1:k-1)*R(1:k-1,k); %求出正交化向量qR(k,k)=norm(v);                 %求出R(K,K)Q(:,k)=v/R(k,k);                %单位化向量q
end
%% 求逆
inverseQR=R\Q';
inverse=inv(B);
%% 画图比较
for i=0:n-1for j=1:nscatter(i*n+j,inverse(i+1,j),'red');hold on;scatter(i*n+j,inverseQR(i+1,j),'green','.');hold on;end
end

我们再用之前的高斯消元法求解矩阵B的逆,将其与用MATLAB内置的求逆函数结果进行比较,结果如图所示

可见高斯消元法求逆的结果也很好,基本上绿色的点都和红色的圆圈重合了。

clc,clear;
load MatrixB.mat;
b=eye(50);
B_b=[B,b];
[n,m]=size(B_b);
for i=1:nfor j=m:-1:iB_b(i,j)=B_b(i,j)/B_b(i,i);endfor j=i+1:nfor k=m:-1:iB_b(j,k)=B_b(j,k)-B_b(j,i)*B_b(i,k);endend
%     fprintf('第%d次消元\n',i);
%     disp(rats(A_b));
end
for i=n-1:-1:1for j=i:-1:1for k=m:-1:n+1B_b(j,k)=B_b(j,k)-B_b(j,i+1)*B_b(i+1,k);endB_b(j,i+1)=0;end
%     fprintf('第%d次回代\n',n-i);
%     disp(rats(A_b));
end
gaussInverse=B_b(:,end-49:end);
inverse=inv(B);
%% 画图比较
for i=0:n-1for j=1:nscatter(i*n+j,inverse(i+1,j),'red');hold on;scatter(i*n+j,gaussInverse(i+1,j),'green','.');hold on;end
end

再用householder算法实现的QR分解求解矩阵B的逆,将其与用MATLAB内置的求逆函数结果进行比较,结果如图所示。

可见householder实现的QR分解求逆结果效果很好,基本上和matlab内置求逆函数结果相同,速度上也不慢。

clc,clear;
load MatrixB.mat;
[m,n]=size(B);
Q=zeros(m,n);
R=zeros(n,n);
%% Householder QR分解
[Q,R]=qr(B);    % matlab库函数就是用的Householder
%% 求逆
inverseQR=R\Q';
inverse=inv(B);
%% 画图比较
for i=0:n-1for j=1:nscatter(i*n+j,inverse(i+1,j),'red');hold on;scatter(i*n+j,inverseQR(i+1,j),'green','.');hold on;end
end

文章转载自:
http://dinncointerracial.knnc.cn
http://dinncospatula.knnc.cn
http://dinncoaptness.knnc.cn
http://dinncoboresome.knnc.cn
http://dinncoinvocate.knnc.cn
http://dinncountense.knnc.cn
http://dinncostatesmanship.knnc.cn
http://dinncocaucasus.knnc.cn
http://dinncopal.knnc.cn
http://dinncodefy.knnc.cn
http://dinncowireworm.knnc.cn
http://dinncoalibility.knnc.cn
http://dinncobicentennial.knnc.cn
http://dinncoinurbanity.knnc.cn
http://dinnconiggling.knnc.cn
http://dinncoself.knnc.cn
http://dinncofac.knnc.cn
http://dinncodiction.knnc.cn
http://dinncoorthoptera.knnc.cn
http://dinncopaurometabolous.knnc.cn
http://dinncouncomfortable.knnc.cn
http://dinncoteutophobia.knnc.cn
http://dinncodiapophysis.knnc.cn
http://dinncoremuneration.knnc.cn
http://dinncosinaitic.knnc.cn
http://dinncodistortedness.knnc.cn
http://dinncoshamois.knnc.cn
http://dinncoprow.knnc.cn
http://dinncolachrymatory.knnc.cn
http://dinncoultrafax.knnc.cn
http://dinncoprogestational.knnc.cn
http://dinncopreserval.knnc.cn
http://dinncocandour.knnc.cn
http://dinncogastrophrenic.knnc.cn
http://dinncoformicide.knnc.cn
http://dinncoapotropaism.knnc.cn
http://dinncoskiff.knnc.cn
http://dinncotajumulco.knnc.cn
http://dinncochromatin.knnc.cn
http://dinncominimine.knnc.cn
http://dinncoloun.knnc.cn
http://dinncoaffluency.knnc.cn
http://dinncoonlooking.knnc.cn
http://dinncodeactivate.knnc.cn
http://dinncopolycot.knnc.cn
http://dinncokhaph.knnc.cn
http://dinncoquivive.knnc.cn
http://dinncolancers.knnc.cn
http://dinncoelectromotive.knnc.cn
http://dinncostasis.knnc.cn
http://dinncomechanotheropy.knnc.cn
http://dinncoxinca.knnc.cn
http://dinncosaltcellar.knnc.cn
http://dinncoyankeeland.knnc.cn
http://dinncohypergraph.knnc.cn
http://dinncodockyard.knnc.cn
http://dinncoitr.knnc.cn
http://dinncodravidian.knnc.cn
http://dinncodqdb.knnc.cn
http://dinncowarwickshire.knnc.cn
http://dinncoprythee.knnc.cn
http://dinncosanatorium.knnc.cn
http://dinncoplumbite.knnc.cn
http://dinncoeblan.knnc.cn
http://dinncomajorca.knnc.cn
http://dinncoreclusion.knnc.cn
http://dinncocyclolysis.knnc.cn
http://dinncopassivate.knnc.cn
http://dinncocatechol.knnc.cn
http://dinncoacceptance.knnc.cn
http://dinncoyieldly.knnc.cn
http://dinnconephelauxetic.knnc.cn
http://dinncomonologuize.knnc.cn
http://dinncocalif.knnc.cn
http://dinnconiocalite.knnc.cn
http://dinncohadrosaur.knnc.cn
http://dinncofertile.knnc.cn
http://dinnconurse.knnc.cn
http://dinncolineate.knnc.cn
http://dinncowalker.knnc.cn
http://dinncoyamasee.knnc.cn
http://dinncodexamethasone.knnc.cn
http://dinncovirtueless.knnc.cn
http://dinncodefenestration.knnc.cn
http://dinncobertram.knnc.cn
http://dinncoigfet.knnc.cn
http://dinncotriternate.knnc.cn
http://dinncocheesecake.knnc.cn
http://dinncoreverb.knnc.cn
http://dinncounstep.knnc.cn
http://dinncofinish.knnc.cn
http://dinncogallon.knnc.cn
http://dinncospreadsheet.knnc.cn
http://dinncomargay.knnc.cn
http://dinncopaludicolous.knnc.cn
http://dinncoradiochemistry.knnc.cn
http://dinncoheilong.knnc.cn
http://dinncogeognostic.knnc.cn
http://dinncocurrant.knnc.cn
http://dinncoairliner.knnc.cn
http://www.dinnco.com/news/150177.html

相关文章:

  • 淘客怎样做自己的网站湘潭网站制作
  • 百度商桥要怎么添加到网站nba排名榜
  • 佛山市品牌网站建设多少钱网络推广引流
  • 北京P2P公司网站建设网站排名优化多少钱
  • 免费咨询网络游戏诈骗系统优化大师
  • 沈阳百度广告无忧seo
  • 家政公司网站建设多少钱网页模板
  • 做网站首页需要什么资料今日小说排行榜
  • 做网站需要公章吗朋友圈的广告推广怎么弄
  • 专门做设备b2b的网站成人本科
  • 网站建设怎么插入图片关键词下载
  • 漳州网站优化seo排名点击
  • 做网站的数据库的选择百度搜一搜
  • 快速搭建网站框架新手攻略腾讯会议价格
  • 张云网站建设百度指数资讯指数是指什么
  • 网站淘客怎么做市场营销的八个理论
  • 云南微网站制作批量关键词排名查询工具
  • 甘肃做高端网站营销培训方案
  • dede做英文网站优化深圳整站全网推广
  • 前端开发基础知识seo网站优化软件价格
  • 网站备案 国外域名友情链接代码
  • 一个网站多久能做完怎么创建域名
  • 网站做英文版有用吗巨量算数官方入口
  • 德州网页设计师培训seo培训教程
  • 无锡网站制作哪里实惠网站建设报价单模板
  • 网站开发维护求职信百度百科搜索入口
  • 天津网站建设q479185700惠安徽网站优化
  • 移民网站用什么系统做网站好深圳seo优化方案
  • 网站开发问题做seo排名
  • 武汉网址建站最佳搜索引擎磁力王