Keyword: 実行列, 条件数
概要
本サンプルは実行列の条件数の推定を行うFortranによるサンプルプログラムです。 本サンプルは以下に示される行列Aの条件数の推定を行いその結果を出力します。
※本サンプルはnAG Fortranライブラリに含まれるルーチン f07agf() のExampleコードです。本サンプル及びルーチンの詳細情報は f07agf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はf07agf のマニュアルページを参照)| このデータをダウンロード |
F07AGF 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の要素を指定しています。
出力結果
(本ルーチンの詳細はf07agf のマニュアルページを参照)- 3行目に条件数の推定値が出力されています。
ソースコード
(本ルーチンの詳細はf07agf のマニュアルページを参照)
※本サンプルソースコードは科学技術・統計計算ライブラリである「nAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法
| このソースコードをダウンロード |
PROGRAM f07agfe
! F07AGF Example Program Text
! Mark 23 Release. nAG Copyright 2011.
! .. Use Statements ..
USE nag_library, ONLY : dgecon, dgetrf, dlange => f06raf, nag_wp, x02ajf
! .. Implicit None Statement ..
IMPLICIT NONE
! .. Parameters ..
INTEGER, PARAMETER :: nin = 5, nout = 6
CHARACTER (1), PARAMETER :: norm = '1'
! .. Local Scalars ..
REAL (KIND=nag_wp) :: anorm, rcond
INTEGER :: i, info, lda, n
! .. Local Arrays ..
REAL (KIND=nag_wp), ALLOCATABLE :: a(:,:), work(:)
INTEGER, ALLOCATABLE :: ipiv(:), iwork(:)
! .. Executable Statements ..
WRITE (nout,*) 'F07AGF Example Program Results'
! Skip heading in data file
READ (nin,*)
READ (nin,*) n
lda = n
ALLOCATE (a(lda,n),work(4*n),ipiv(n),iwork(n))
! Read A from data file
READ (nin,*) (a(i,1:n),i=1,n)
! Compute norm of A
! f06raf is the nAG name equivalent of the LAPACK auxiliary dlange
anorm = dlange(norm,n,n,a,lda,work)
! Factorize A
! The nAG name equivalent of dgetrf is f07adf
CALL dgetrf(n,n,a,lda,ipiv,info)
WRITE (nout,*)
IF (info==0) THEN
! Estimate condition number
! The nAG name equivalent of dgecon is f07agf
CALL dgecon(norm,n,a,lda,anorm,rcond,work,iwork,info)
IF (rcond>=x02ajf()) THEN
WRITE (nout,99999) 'Estimate of condition number =', &
1.0E0_nag_wp/rcond
ELSE
WRITE (nout,*) 'A is singular to working precision'
END IF
ELSE
WRITE (nout,*) 'The factor U is singular'
END IF
99999 FORMAT (1X,A,1P,E10.2)
END PROGRAM f07agfe
