大数跨境
0
0

知识分享 | 国产数值计算通用软件:利用矩阵分解法求解线性方程组

知识分享 | 国产数值计算通用软件:利用矩阵分解法求解线性方程组 大数据分析与应用国家工程实验室
2022-03-23
2
导读:本期知识分享的内容是通过国产数值计算通用软件利用矩阵分解法求解线性方程组,该软件为北京大学重庆大数据研究院数值计算实验室研发,是具有国产自主知识产权的科学计算通用软件。

以下文章来源于北京大学重庆大数据研究院



本期知识分享的内容是通过国产数值计算通用软件利用矩阵分解法求解线性方程组,该软件为北京大学重庆大数据研究院数值计算实验室研发,是具有国产自主知识产权的科学计算通用软件。软件提供科学计算、可视化、交互式程序设计的高科技计算环境,提供线性代数、偏微分方程数值解等数值分析、矩阵计算相关教学与科研的辅助工具。目前,数值计算实验室已与全国20余所重点高校合作,逐步开展教学工具与课程替换工作,并分阶段定向邀请各高校进行试用。

求解线性方程组是线性代数中的一个基本内容,在现实生活中,许多工程问题可以化简为线性方程组的求解问题。通过使用该数值计算软件来求解这类问题方便快捷,下面我们将用该软件分享求解线性方程组的思路。


线性方程组的一般形式为:



利用矩阵分解来求解线性方程组,可以节省内存和计算时间,因此它也是在工程计算中最常用的技术。如何利用LU分解、楚列斯基(Cholesky)分解来求解线性方程组?




01

基础知识


#

1.1 LU分解

在线性代数中, LU分解(LU Factorization)是矩阵分解的一种,可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积),即A=LU。LU分解主要应用在数值分析中,用来解线性方程组、求反矩阵或计算行列式。



>>help lu


LU 分解


    X = lu(A) 将稠密矩阵 A 进行列主元 LU 分解,即 PA = LU。

    U 的信息存储在 X 的对角和上三角部分,

    L 的信息存储在 X 的下三角部分,对角线上的元素 1 省略。

    P 的信息不储存。该语法会丢失 LU 分解的部分信息,一般不使用。


    [L,U] = lu(A) 将稠密矩阵 A 分解为一个上三角矩阵 U 和一个经过置换的下三角矩阵 L,使得 A = L*U。


    [L,U,P] = lu(A) 还返回一个置换矩阵 P,并满足 A = P'*L*U。在此语法中,L是单位下三角矩阵,U是上三角矩阵。


[L,U,P]= lu(A,outputForm) 以 outputForm 指定的格式返回 P。将outputForm 指定为 'vector' 会将 P 返回为一个置换向量,并满足

    A(P,:) = L*U。


    说明:分解完毕后的 L 和 U 的数据类型与 A 相同,P 的存储方式为 double(与 A 无关)。



(软件内帮助信息)

1.2 Cholesky分解



>>help chol


CHOL 分解


R = chol(A) 将对称正定矩阵 A 分解成满足 A = R'*R 的上三角 R。

如果 A 是非对称矩阵,则 chol 将矩阵视为对称矩阵,并且只使用 

A 的对角线和上三角形。



(软件内帮助信息)




02

解题思路


#

2.1 LU分解法


function x = LU_example(A, b)


      r = rank(A);

      [m,n] = size(A);

      % LU分解

      [L,U,P] = lu(A);

      b = P*b;

 

      x = zeros(m,1);

      y = zeros(m,1);

 

      y(1) = b(1);

      if m > 1

          for i = 2:m

             y(i) = b(i) - L(i,1:i-1)*y(1:i-1);

          end

      end

 

      x(r) = y(r)/U(r,r);

      if r>1

          for i=r-1:-1:1

             x(i) = (y(i)-U(i,i+1:r)*x(i+1:r))/U(i,i);

          end

      end 

end  






(LU分解法代码)



   # 2.2 Cholesky分解法



function x = chol_example(A,b)


      [n,n]=size(A);

 

      % Cholesky 分解

      R = chol(A);

 

      x=zeros(n,1);

      y=zeros(n,1);

      y(1) = b(1)/R(1,1);

      if n>1

             for i=2:n

               y(i) = (b(i)-R(1:i-1,i)'*y(1:i-1))/R(i,i);

             end

       end      


       x(n) = y(n)/R(n,n);

       if n>1

              for i=n-1:-1:1

                  x(i)=(y(i)-R(i,i+1:n)*x(i+1:n))/R(i,i);

              end

       end

end





(cholesky分解法代码)




03

具体例子



>>A = [3 3 -3; 3 5 -2; -3 -2 5]


A=

  3x3 double matrix

    3.0000    3.0000   -3.0000

    3.0000    5.0000   -2.0000

   -3.0000   -2.0000    5.0000


>>b = [1 2 3]'


b=

  3x1 double matrix

    1.0000

    2.0000

    3.0000


>>x = LU_example(A,b)


x=

  3x1 double matrix

    3.3333

   -0.6667

    2.3333


>>x = chol_example(A,b)


x=

  3x1 double matrix

    3.3333

   -0.6667

    2.3333




(软件内输出结果)




北京大学重庆大数据研究院

数 值 计 算 实 验 室

实验室主任:李若

北京大学博雅特聘教授,博士生导师,数学科学学院副院长。获国家杰出青年基金(2013),教育部长江特聘教授(2015),科技部中青年科技创新领军人才(2015),中组部万人计划(2016),冯康科学计算奖(2017)等,主要研究方向偏微分方程数值解和计算流体力学。


数值计算实验室(以下简称“实验室”)是在北京大学的指导和支持下,由北京大学大数据分析与应用技术国家工程实验室组建专业团队,北京大学重庆大数据研究院进行科技成果转化与培育孵化的重点实验室。

实验室在西部(重庆)科学城聚集科学研究与产品研发的专业人才,开展国产数值计算软件的科研与开发,重点攻关国产数值计算软件的核心科学技术难题,解决该领域的“卡脖子”问题,推动国产数值计算软件的应用落地。实验室将联合各方力量,在数值计算领域进行科研攻关、合作共建、人才培养等方面开展深入合作,加速推进国产数值计算软件的生态建设与产业发展。


实验室招聘:

  • 研究员

  • 博士后

  • 产品经理

  • 算法工程师

  • 图像处理算法工程师

  • 软件研发工程师(C/C++方向)

  • 软件工程师(QT方向)

  • Mac软件研发工程师(C++/QT)

  • UI&UX工程师

  • 技术支持工程师

  • 算法测试工程


简历投递:

  1. 简历接收邮箱:hr@cqbdri.pku.edu.cn

  2. 邮件标题:姓名-中心/实验室-岗位-最高学历




end

了解更多资讯,敬请点击关注!



往期回顾
张平文:人工智能让冬奥会气象预报更精准
鄂维南:参加首届中国生物计算大会并做主题演讲

陈松蹊独家专访:光荣与梦想

钱德沛独家专访:感受超算技术领跑的心跳


国家工程实验室Newsletter 2021年04

国家工程实验室Newsletter 2021年05

国家工程实验室Newsletter 2021年06

国家工程实验室Newsletter 2021年07

国家工程实验室Newsletter 2021年08

国家工程实验室Newsletter 2021年09

国家工程实验室Newsletter 2021年10

国家工程实验室Newsletter 2021年11

国家工程实验室Newsletter 2021年12

国家工程实验室Newsletter 2022年01-02


诚邀 | 申报2022年国家自然科学基金海外优青项目

招聘 | 2022博雅博士后、普通博士后

招聘 | 大数据平台与安全研发高级工程师等科研岗位



【声明】内容源于网络
0
0
大数据分析与应用国家工程实验室
用于实验室新闻发布、成果宣传、项目展示等。
内容 428
粉丝 0
大数据分析与应用国家工程实验室 用于实验室新闻发布、成果宣传、项目展示等。
总阅读82
粉丝0
内容428