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
