fortran 子程序矩阵求逆
时间: 2023-09-28 09:04:15 浏览: 483
下面是一个简单的 Fortran 子程序,用于计算矩阵的逆:
```
subroutine invert(n, a, ainv)
! 计算矩阵 a 的逆矩阵 ainv
! n 是矩阵维数
! a 是原始矩阵
! ainv 是逆矩阵
implicit none
integer, intent(in) :: n
real*8, intent(in) :: a(n,n)
real*8, intent(out) :: ainv(n,n)
integer :: i, j, k
real*8 :: factor, temp(n,n)
! 初始化逆矩阵为单位矩阵
ainv = 0.0
do i = 1, n
ainv(i,i) = 1.0
end do
! 高斯-约旦消元法计算逆矩阵
do k = 1, n
factor = a(k,k)
do j = 1, n
a(k,j) = a(k,j) / factor
ainv(k,j) = ainv(k,j) / factor
end do
do i = 1, n
if (i /= k) then
factor = a(i,k)
do j = 1, n
a(i,j) = a(i,j) - factor * a(k,j)
ainv(i,j) = ainv(i,j) - factor * ainv(k,j)
end do
end if
end do
end do
end subroutine
```
该程序使用高斯-约旦消元法计算逆矩阵。在调用该子程序之前,您需要将矩阵 `a` 和逆矩阵 `ainv` 声明为 `real*8` 类型的二维数组,并将矩阵大小 `n` 传递给子程序。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)