以下是使用 FORTRAN95 编写的矩阵乘积和逆矩阵的示例代码:

program matrix_operations
  implicit none
  integer, parameter :: N = 3  ! 矩阵大小
  real :: A(N, N), B(N, N), C(N, N), D(N, N)
  integer :: i, j, k

  ! 填充矩阵A和B
  do i = 1, N
    do j = 1, N
      A(i, j) = i + j
      B(i, j) = i - j
    end do
  end do

  ! 计算矩阵乘积C = A * B
  do i = 1, N
    do j = 1, N
      C(i, j) = 0.0
      do k = 1, N
        C(i, j) = C(i, j) + A(i, k) * B(k, j)
      end do
    end do
  end do

  ! 打印矩阵乘积C
  print *, '矩阵乘积C ='
  do i = 1, N
    write(*, '(3F6.2)') (C(i, j), j = 1, N)
  end do

  ! 计算逆矩阵D = inv(A)
  call matrix_inverse(A, D)

  ! 打印逆矩阵D
  print *, '逆矩阵D ='
  do i = 1, N
    write(*, '(3F6.2)') (D(i, j), j = 1, N)
  end do

contains

  subroutine matrix_inverse(A, D)
    real, intent(in) :: A(N, N)
    real, intent(out) :: D(N, N)
    integer :: ipiv(N), info

    ! 复制A到D,以防止A的内容被修改
    D = A

    ! 调用 LAPACK 子程序计算逆矩阵
    call sgetrf(N, N, D, N, ipiv, info)
    call sgetri(N, D, N, ipiv, work, lwork, info)

    if (info /= 0) then
      print *, '无法计算逆矩阵'
    end if

  end subroutine matrix_inverse

end program matrix_operations

请注意,该示例代码使用了 LAPACK 库中的 sgetrfsgetri 子程序来计算逆矩阵。你需要确保已正确链接 LAPACK 库。此外,还需要在代码中定义适当的 LAPACK 库函数声明,包括 sgetrfsgetri


原文地址: https://www.cveoy.top/t/topic/o1U8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录