関連情報

実行列の逆行列

Fortranによるサンプルソースコード
使用ルーチン名:f07ajf

Keyword: 実行列, 逆行列

概要

本サンプルは実行列の逆行列を求めるFortranによるサンプルプログラムです。 本サンプルは以下に示される行列Aの逆行列を求めその結果を出力します。

実行列のデータ 

※本サンプルはNAG Fortranライブラリに含まれるルーチン f07ajf() のExampleコードです。本サンプル及びルーチンの詳細情報は f07ajf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本ルーチンの詳細はf07ajf のマニュアルページを参照)

このデータをダウンロード
F07AJF Example Program Data
  4                           :Value of N
  1.80   2.88   2.05  -0.89
  5.25  -2.95  -0.95  -3.80
  1.58  -2.69  -2.90  -1.04
 -1.11  -0.66  -0.59   0.80   :End of matrix A 

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に行列Aの次数(n)を指定しています。
  • 3〜6行目に行列Aの要素を指定しています。

出力結果

(本ルーチンの詳細はf07ajf のマニュアルページを参照)

この出力例をダウンロード
 F07AJF Example Program Results

 Inverse
             1          2          3          4
 1      1.7720     0.5757     0.0843     4.8155
 2     -0.1175    -0.4456     0.4114    -1.7126
 3      0.1799     0.4527    -0.6676     1.4824
 4      2.4944     0.7650    -0.0360     7.6119

  • 5〜8行目に逆行列が出力されています。

ソースコード

(本ルーチンの詳細はf07ajf のマニュアルページを参照)

※本サンプルソースコードは科学技術・統計計算ライブラリである「NAG Fortranライブラリ」の関数を呼び出します。
サンプルのコンパイル及び実行方法


このソースコードをダウンロード
    PROGRAM f07ajfe

!      F07AJF Example Program Text

!      Mark 23 Release. NAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : dgetrf, dgetri, nag_wp, x04caf
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: nin = 5, nout = 6
!      .. Local Scalars ..
       INTEGER                         :: i, ifail, info, lda, lwork, n
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: a(:,:), work(:)
       INTEGER, ALLOCATABLE            :: ipiv(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'F07AJF Example Program Results'
!      Skip heading in data file
       READ (nin,*)
       READ (nin,*) n
       lda = n
       lwork = 64*n
       ALLOCATE (a(lda,n),work(lwork),ipiv(n))

!      Read A from data file

       READ (nin,*) (a(i,1:n),i=1,n)

!      Factorize A

!      The NAG name equivalent of dgetrf is f07adf
       CALL dgetrf(n,n,a,lda,ipiv,info)

       WRITE (nout,*)
       FLUSH (nout)
       IF (info==0) THEN

!         Compute inverse of A

!         The NAG name equivalent of dgetri is f07ajf
          CALL dgetri(n,a,lda,ipiv,work,lwork,info)

!         Print inverse

!         ifail: behaviour on error exit
!                =0 for hard exit, =1 for quiet-soft, =-1 for noisy-soft
          ifail = 0
          CALL x04caf('General',' ',n,n,a,lda,'Inverse',ifail)

       ELSE
          WRITE (nout,*) 'The factor U is singular'
       END IF

    END PROGRAM f07ajfe


Results matter. Trust NAG.

Privacy Policy | Trademarks