fortran 逆矩阵
时间: 2023-05-24 19:06:47 浏览: 341
Inverse-master.zip_数学计算_Fortran_
以下为Fortran代码实现逆矩阵:
```
program inverse_matrix
implicit none
integer, parameter :: n = 3 ! 矩阵维度
real :: a(n,n), b(n,n) ! a为原矩阵,b为逆矩阵
integer :: ipivot(n), info ! ipivot为主元素数组,info为返回值
integer :: i, j
a = reshape([ 1., 2., 3., &
-1., 0., 2., &
2., 1., -1. ], [ n, n ]) ! 赋初值
call sgetrf(n, n, a, n, ipivot, info) ! LU分解
call sgetri(n, a, n, ipivot, b, n, info) ! 逆矩阵计算
write(*,*)
write(*,'(A)') '原矩阵:'
do i = 1, n
write(*,'(3F8.2)') (a(i,j),j=1,n)
end do
write(*,*)
write(*,'(A)') '逆矩阵:'
do i = 1, n
write(*,'(3F8.2)') (b(i,j),j=1,n)
end do
end program inverse_matrix
```
程序中首先定义了矩阵的维度n和矩阵a、b以及主元素数组ipivot和返回值info。接着,使用reshape函数对a进行赋初值。
调用sgetrf函数对a进行LU分解,对应的ipivot数组存储每一行中主元素的位置,返回结果则存在info中。
使用sgetri函数计算逆矩阵,输入参数包括矩阵维度n、原矩阵a以及LU分解中得到的主元素数组ipivot,输出参数包括逆矩阵b和返回值info。
最后,输出原矩阵a和逆矩阵b的值。
值得注意的是,上述代码中使用的是单精度浮点数,若需精度更高,可将real改为double precision。
阅读全文