FORTRAN 矩阵运算:3x3 阶矩阵的逆矩阵和乘积计算
在FORTRAN中,可以使用库函数来进行矩阵运算。以下是一个计算3x3阶矩阵逆矩阵和乘积的示例代码:
program matrix_inverse
implicit none
integer, parameter :: n = 3
real :: matrix(n,n), inverse(n,n), product(n,n)
integer :: i, j, info
! 定义输入矩阵
matrix = reshape((/1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0/), shape(matrix))
! 计算逆矩阵
call invert(matrix, inverse, info)
! 打印逆矩阵
print *, 'Inverse Matrix:'
do i = 1, n
print *, (inverse(i,j), j = 1, n)
end do
! 计算矩阵乘积
product = matmul(matrix, inverse)
! 打印乘积矩阵
print *, 'Product Matrix:'
do i = 1, n
print *, (product(i,j), j = 1, n)
end do
contains
subroutine invert(matrix, inverse, info)
implicit none
integer, parameter :: n = 3
real, intent(in) :: matrix(n,n)
real, intent(out) :: inverse(n,n)
integer, intent(out) :: info
integer :: ipiv(n), lwork, iwork(n)
real :: work(n*n)
integer :: i, j
inverse = matrix
lwork = n*n
call sgetrf(n, n, inverse, n, ipiv, info)
call sgetri(n, inverse, n, ipiv, work, lwork, info)
end subroutine invert
end program matrix_inverse
这个示例代码使用了SGETRF和SGETRI库函数来计算逆矩阵。你可以将输入矩阵的值修改为你需要计算的矩阵,然后编译并运行这个代码。它会输出逆矩阵和乘积矩阵的结果。
代码解释:
SGETRF: 用于计算矩阵的LU分解。SGETRI: 用于计算LU分解后的矩阵的逆矩阵。
注意:
SGETRF和SGETRI函数属于 LAPACK 库中的函数,需要在编译时链接 LAPACK 库。- 在使用
matmul函数进行矩阵乘法时,需要确保矩阵的维度匹配。
这个示例代码提供了一个基本的矩阵运算框架,你可以根据自己的需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/o2jb 著作权归作者所有。请勿转载和采集!