計算ルーチン: 実対称正定値三重対角行列の L×D×L′分解

LAPACKサンプルソースコード : 使用ルーチン名:DPTTRF

ホーム > LAPACKサンプルプログラム目次 > 計算ルーチン > 実対称正定値三重対角行列の L×D×L′分解

概要

本サンプルはFortran言語によりLAPACKルーチンDPTTRFを利用するサンプルプログラムです。

入力データ

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

このデータをダウンロード
DPTTRF Example Program Data
  5                           :Value of N
  4.0  10.0  29.0  25.0   5.0 :End of diagonal D
 -2.0  -6.0  15.0   8.0       :End of sub-diagonal E

出力結果

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

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

 Details of factorization

  The diagonal elements of D
    4.0000   9.0000  25.0000  16.0000   1.0000

  Subdiagonal elements of the Cholesky factor L
   -0.5000  -0.6667   0.6000   0.5000

ソースコード

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

※本サンプルソースコードのご利用手順は「サンプルのコンパイル及び実行方法」をご参照下さい。


このソースコードをダウンロード
    Program dpttrf_example

!     DPTTRF Example Program Text

!     Copyright 2017, Numerical Algorithms Group Ltd. http://www.nag.com

!     .. Use Statements ..
      Use lapack_interfaces, Only: dpttrf
      Use lapack_precision, Only: dp
!     .. Implicit None Statement ..
      Implicit None
!     .. Parameters ..
      Integer, Parameter :: nin = 5, nout = 6
!     .. Local Scalars ..
      Integer :: info, n
!     .. Local Arrays ..
      Real (Kind=dp), Allocatable :: d(:), e(:)
!     .. Executable Statements ..
      Write (nout, *) 'DPTTRF Example Program Results'
      Write (nout, *)
!     Skip heading in data file
      Read (nin, *)
      Read (nin, *) n

      Allocate (d(n), e(n-1))

!     Read the lower bidiagonal part of the tridiagonal matrix A from
!     data file

      Read (nin, *) d(1:n)
      Read (nin, *) e(1:n-1)

!     Factorize the tridiagonal matrix A

      Call dpttrf(n, d, e, info)

      If (info>0) Then
        Write (nout, 100) 'The leading minor of order ', info, &
          ' is not positive definite'
      End If

!     Print details of the factorization

      Write (nout, *) 'Details of factorization'
      Write (nout, *)
      Write (nout, *) ' The diagonal elements of D'
      Write (nout, 110) d(1:n)
      Write (nout, *)
      Write (nout, *) ' Subdiagonal elements of the Cholesky factor L'
      Write (nout, 110) e(1:n-1)

100   Format (1X, A, I3, A)
110   Format (1X, 8F9.4)
    End Program


ご案内
関連情報
Privacy Policy  /  Trademarks