fortran使用MKL函数库计算方阵的逆矩阵

本篇博文简要介绍使用MKL函数库计算方阵的逆矩阵
代码如下:
program MKL_getrfANDgetri
        use lapack95
        implicit none
        integer, parameter :: n = 3
        integer :: i, j, ipiv(n)
        real(kind=8) :: a(n,n), aa(n,n)
  
        call random_seed()
        call random_number(a)
        aa = a

        write(*,'(1x,a)') "a = "
        do i = 1, n
                write(*,'(*(f12.6,3x))') a(i,:)
        end do
  
        !// 使用lapack求解逆矩阵
        call getrf( a, ipiv )
        call getri( a, ipiv )
  
        write(*,'(1x,a)') 'inv(a) = '
        do i = 1, n
                write(*,'(*(f12.6,3x))') a(i,:)
        end do
  
        write(*,'(1x,a)') "checking..."
        aa = matmul(aa,a)  !// 原矩阵与其逆矩阵的结果为单位矩阵
        do i = 1, n
                write(*,'(*(f12.6,3x))') aa(i,:)
        end do

end program MKL_getrfANDgetri

结果如下:
 a =
    0.959299       0.268247       0.274620
    0.013673       0.082084       0.275984
    0.056097       0.730892       0.177709
 inv(a) =
    1.072178      -0.876915      -0.295021
   -0.074784      -0.888503       1.495423
   -0.030876       3.931107      -0.430155
 checking...
    1.000000       0.000000      -0.000000
   -0.000000       1.000000       0.000000
   -0.000000       0.000000       1.000000

这里值得注意的是,在调用getri计算逆矩阵之前,应该先调用getrf先进行矩阵的LU分解

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值