PLU-分解

PLU-分解是对LU分解的一种改进,其增加了选主元的操作增加了计算的稳定性,及在第i次循环中将
j=where(max⁡(∣A[i:n,i]∣))j=where(\max(|A[i:n,i]|))j=where(max(∣A[i:n,i]∣)) 行和第i行进行交换来比避免对角元素出现0的情况,计算结果
PA=LUPA=LUPA=LU
P为置换矩阵,L为下三角矩阵,U为上三角矩阵。选主元操作在计算过程中以一个一维数组保存代替n×nn\times nn×n的矩阵,以下为此算法的Fortran代码,a为输入矩阵,l,u,p分别为下三角,上三角,置换矩阵,n为矩阵大小,当erro为0时计算失败,成功则为1

subroutine plu_decompose(a,l,u,p,n,erro)real,intent(inout)::a(n,n)real,intent(out)::l(n,n),u(n,n),p(n,n)integer,intent(in)::ninteger::pi(n)integer,intent(out)::errointeger::i,j,k,maxp,temppreal::maxdo i=1,npi(i)=iend dodo i=1,n-1max=a(i,i)maxp=ido j=i+1,nif (abs(a(j,i))>max) thenmax=abs(a(j,i))maxp=jend ifend doif (max+1.0==1.0) thenerro=0stopend ifif (maxp/=i) thentempp=pi(i)pi(i)=pi(maxp);pi(maxp)=temppa(i:maxp:maxp-i,:)=a(maxp:i:i-maxp,:)end ifdo j=i+1,na(j,i)=a(j,i)/a(i,i)end dodo j=i+1,ndo k=i+1,na(j,k)=a(j,k)-a(j,i)*a(i,k)end doend doend dodo i=1,np(i,i)=0l(i,i)=1u(i,i)=a(i,i)do j=1,i-1p(i,j)=0p(j,i)=0l(i,j)=a(i,j)l(j,i)=0u(j,i)=a(j,i)u(i,j)=0end doend dodo i=1,np(i,pi(i))=1end do
end subroutine

再通过解线性方程组可以得到矩阵 AAA 的逆,代码如下,其中第一次得到的矩阵为一个下三角阵,这样可以节省一半的计算量

subroutine reverse(a,b,n,erro)implicit nonereal,intent(inout)::a(n,n)real,intent(out)::b(n,n)real::l(n,n),u(n,n),p(n,n),c(n,n),tempinteger::n,errointeger::i,j,kcall plu_decompose(a,l,u,p,n,erro)if (erro==0) thenreturnend ifdo i=1,ndo j=1,i-1c(j,i)=0.0end dodo j=i,ntemp=0do k=1,j-1temp=temp+l(j,k)*c(k,i)end doif (i==j)thenc(j,i)=(1.0-temp)/l(j,j)elsec(j,i)=(0.0-temp)/l(j,j)end ifend doend dodo i=1,ndo j=n,1,-1temp=0do k=n,j+1,-1temp=temp+b(k,i)*u(j,k)end dob(j,i)=(c(j,i)-temp)/u(j,j)end doend dob=matmul(b,p)
end subroutine

测试代码如下

program mainimplicit nonereal::a(4,4),a_(4,4)real::l(4,4)real::w(4,4)integer :: i,jinteger:: udata((A(i,j),i=1,4),j=1,4)/ 2,0,2,0.6,3,3,4,-2,5,5,4,2,-1,-2,3.4,-1 /data((a_(i,j),i=1,4),j=1,4)/ 2,0,2,0.6,3,3,4,-2,5,5,4,2,-1,-2,3.4,-1 /a=transpose(a)a_=transpose(a_)do i=1,4print *,a(i,:)end docall reverse(a,l,4,u)w=matmul(a_,l)print *,''do i=1,4print *,w(i,:)end dopause
end program main

PLU-分解以及求逆矩阵相关推荐

  1. Python解决矩阵的PLU分解及求矩阵的逆

    Python解决矩阵的PLU分解及求矩阵的逆 关于PLU的分解基础知识就不叙述了,可以自己去看矩阵分析的书,大体上和高斯消去法差不多. PLU分解被经常用在Ax=bAx=bAx=b的求解上 在这里xx ...

  2. matlab求逆矩阵_MPU6050姿态解算2-欧拉角amp;旋转矩阵

    1 IMU姿态解算 IMU,即惯性测量单元,一般包含三轴陀螺仪与三轴加速度计.之前的文章 码农爱学习:MPU6050姿态解算方式1-DMP​zhuanlan.zhihu.com 已将对MPU6050这 ...

  3. 机器学习常见求逆矩阵的方法

    机器学习的常见求解逆矩阵的方法 高斯消元法 LU分解法 SVD分解法 QR分解法 高斯消元法 高斯消元法是最经典也是最广为人知的一种矩阵求逆方法,但是在现实应用中很少用到高斯消元法来进行矩阵的逆矩阵的 ...

  4. 求逆矩阵计算机方法,求逆矩阵的快速方法(用于编程).pdf

    求逆矩阵的快速方法(用于编程) ? ? 1 2 2 2 Ρ Ρ Ρ Ρ Ρ ? Α Α Α Α Α Α 3 Α Β Β Β 3 Α Β Α Β Α Β Α Β Β Β Β 第 20 卷第 1 期 大 ...

  5. python C++ 求逆矩阵库

    python求逆矩阵库 https://numpy.org/ C++求逆矩阵库 http://eigen.tuxfamily.org/index.php?title=Main_Page

  6. 【BZOJ-4522】密钥破解 数论 + 模拟 ( Pollard_Rho分解 + Exgcd求逆元 + 快速幂 + 快速乘)...

    4522: [Cqoi2016]密钥破解 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 290  Solved: 148 [Submit][Stat ...

  7. 变换例题_用初等变换求逆矩阵的小小解释

    在我们学习逆矩阵的过程中,肯定会遇到这样一种求逆矩阵的方法: 若A是一个n阶可逆矩阵, (虚竖线打不出,凑合着看吧!)这一过程中经历了一系列初等行变换,并且我们下结论说: 中的 就是A的逆矩阵! 按逻 ...

  8. 求逆矩阵计算器_991CN的矩阵运算

    昨天的推文中说了一道二端口的题目,虚线中的大二端口由两个小二端口级联而成,在计算过程中,我们需要使用到矩阵的运算,昨天讲题的时候说会说一下用计算器进行矩阵运算,今天我们就来说一下. 其实在算电路的时候 ...

  9. numpy求逆矩阵_线性代数精华2——逆矩阵的推导过程

    点击上方蓝字,和我一起学技术. 上一讲当中我们复习了行列式的内容,行列式只是开胃小菜,线性代数的大头还是矩阵. 矩阵的定义很简单,就是若干个数按照顺序排列在一起的数表.比如m * n个数,排成一个m ...

  10. 选主元的高斯-约旦(Gauss-Jordan)消元法解线性方程组/求逆矩阵

    选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵.解线性方程组(插一句:LM算法求解的一个步骤),等等.它的速度不是最快的,但是它非常稳定(来自网上的定义 ...

最新文章

  1. bootstrap基础学习十一篇
  2. 解析XML方式-DOM,SAX
  3. (转)在WCF服务的ServiceReferences.ClientConfig中使用相对路径
  4. Leecode20. 有效的括号——Leecode大厂热题100道系列
  5. Delphi 2009 之 TCategoryPanelGroup[5]: HeaderStyle
  6. Nodejs下的ES6兼容性与性能分析
  7. Numpy Binary operations
  8. Python学习-类的继承
  9. 无线电简单用语.解析
  10. java计算机毕业设计黑格伯爵国际英语贵族学校官网源码+mysql数据库+系统+lw文档+部署
  11. 【转】POS终端MAC算法
  12. Ubuntu Desktop 更改默认应用程序 (Videos -> SMPlayer)
  13. 华为云服务器(Centos7)安装与卸载mysql8
  14. 王者的荣耀--Monza后记
  15. AD在绘制PCB时候出现 Un-Routed Net Constraint Violation问题解决
  16. 灵机一栋团队alpha冲刺 Ⅰ
  17. Nuist集训队作业:深度优先搜索(回溯算法)
  18. Gingko Framework:页面参数中文乱码解决
  19. 一杯茶的功夫让你学会OA选型
  20. 深入了解JS的Number类型

热门文章

  1. 数字藏品平台搭建需要注意哪些法律风险及资质?
  2. 三星i9500八核版本ROOT,适用于除定制机之外的所有版本
  3. 黑客美化版大马_2012版
  4. 金蝶K3供应链与总账对账的思路及方法
  5. 产业互联网时代的到来(内容摘自看雪论坛)
  6. Avira防毒软件(小红伞)将推出中文版
  7. 手写文字怎么识别转换?有哪些练字的方法?
  8. c执行cmd pdf2swf_swftools实现pdf文档转swf文件 解决中文乱码
  9. 第三章 概念模型设计(三)
  10. 对于25岁的我们,尴尬吗?