計算ルーチン: 複素上三角行列の選択された固有値と固有ベクトルの感度の評価

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

ホーム > LAPACKサンプルプログラム目次 > 計算ルーチン > 複素上三角行列の選択された固有値と固有ベクトルの感度の評価

概要

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

入力データ

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

このデータをダウンロード
ZTRSNA Example Program Data
  4                                                             :Value of N
 (-6.0004,-6.9999) ( 0.3637,-0.3656) (-0.1880, 0.4787) ( 0.8785,-0.2539)
 ( 0.0000, 0.0000) (-5.0000, 2.0060) (-0.0307,-0.7217) (-0.2290, 0.1313)
 ( 0.0000, 0.0000) ( 0.0000, 0.0000) ( 7.9982,-0.9964) ( 0.9357, 0.5359)
 ( 0.0000, 0.0000) ( 0.0000, 0.0000) ( 0.0000, 0.0000) ( 3.0023,-3.9998)
                                                                :End of matrix T

出力結果

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

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

 S
       9.9E-01    1.0E+00    9.8E-01    9.8E-01

 SEP
       8.4E+00    8.0E+00    5.8E+00    5.8E+00

 Approximate error estimates for eigenvalues of T (machine-dependent)
       2.1E-15    2.1E-15    2.1E-15    2.1E-15

 Approximate error estimates for right eigenvectors of T (machine-dependent)
       2.5E-16    2.6E-16    3.5E-16    3.5E-16

ソースコード

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

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


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

!     ZTRSNA Example Program Text

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

!     .. Use Statements ..
      Use lapack_interfaces, Only: zlange, ztrevc, ztrsna
      Use lapack_precision, Only: dp
!     .. Implicit None Statement ..
      Implicit None
!     .. Parameters ..
      Integer, Parameter :: nin = 5, nout = 6
!     .. Local Scalars ..
      Real (Kind=dp) :: eps, tnorm
      Integer :: i, info, ldt, ldvl, ldvr, ldwork, m, n
!     .. Local Arrays ..
      Complex (Kind=dp), Allocatable :: t(:, :), vl(:, :), vr(:, :), &
        work(:, :)
      Real (Kind=dp), Allocatable :: rwork(:), s(:), sep(:)
      Logical :: select(1)
!     .. Intrinsic Procedures ..
      Intrinsic :: epsilon
!     .. Executable Statements ..
      Write (nout, *) 'ZTRSNA Example Program Results'
      Write (nout, *)
!     Skip heading in data file
      Read (nin, *)
      Read (nin, *) n
      ldt = n
      ldvl = n
      ldvr = n
      ldwork = n
      Allocate (t(ldt,n), vl(ldvl,n), vr(ldvr,n), work(ldwork,n+1), rwork(n), &
        s(n), sep(n))

!     Read T from data file

      Read (nin, *)(t(i,1:n), i=1, n)

!     Calculate the left and right eigenvectors of T

      Call ztrevc('Both', 'All', select, n, t, ldt, vl, ldvl, vr, ldvr, n, m, &
        work, rwork, info)

!     Estimate condition numbers for all the eigenvalues and right
!     eigenvectors of T

      Call ztrsna('Both', 'All', select, n, t, ldt, vl, ldvl, vr, ldvr, s, &
        sep, n, m, work, ldwork, rwork, info)

!     Print condition numbers of eigenvalues and right eigenvectors

      Write (nout, *) 'S'
      Write (nout, 100) s(1:m)
      Write (nout, *)
      Write (nout, *) 'SEP'
      Write (nout, 100) sep(1:m)

!     Calculate approximate error estimates (using the 1-norm)

      eps = epsilon(1.0E0_dp)
      tnorm = zlange('1-norm', n, n, t, ldt, rwork)
      Write (nout, *)
      Write (nout, *) 'Approximate error estimates for eigenvalues ', &
        'of T (machine-dependent)'
      Write (nout, 100)(eps*tnorm/s(i), i=1, m)
      Write (nout, *)
      Write (nout, *) 'Approximate error estimates for right ', &
        'eigenvectors of T (machine-dependent)'
      Write (nout, 100)(eps*tnorm/sep(i), i=1, m)

100   Format ((3X,1P,7E11.1))
    End Program


ご案内
関連情報
Privacy Policy  /  Trademarks