Keyword: ハンケル関数, 複素数
概要
本サンプルは複素数zのハンケル関数を求めるFortranによるサンプルプログラムです。 本サンプルは複素数の引数zを読み込み、zの各値についてハンケル関数あるいは
を求めて出力します。
※本サンプルはnAG Fortranライブラリに含まれるルーチン s17dlf() のExampleコードです。本サンプル及びルーチンの詳細情報は s17dlf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はs17dlf のマニュアルページを参照)1 2 3 4 5 6
このデータをダウンロード |
S17DLF Example Program Data 1 0.00 ( 0.3, 0.4) 'U' 1 2.30 ( 2.0, 0.0) 'U' 1 2.12 (-1.0, 0.0) 'U' 2 6.00 ( 3.1, -1.6) 'U' 2 6.00 ( 3.1, -1.6) 'S'
- 1行目はタイトル行で読み飛ばされます。
- 2~6行目に、関数の種類(m)、ハンケル関数の関数列の最初の関数の次数(fnu)、引数zの複素数の値、スケーリングオプション(scal)を指定しています。関数の種類の"1"は
を意味し、"2"は
を意味します。"U"はスケーリングされないことを意味し、 "S"はスケーリングされることを意味します。
出力結果
(本ルーチンの詳細はs17dlf のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11
この出力例をダウンロード |
S17DLF Example Program Results Calling with N = 2 M FNU Z SCAL CY(1) CY(2) NZ 1 0.0000 ( 0.300, 0.400) U ( 0.347, -0.559) ( -0.791, -0.818) 0 1 2.3000 ( 2.000, 0.000) U ( 0.272, -0.740) ( 0.089, -1.412) 0 1 2.1200 ( -1.000, 0.000) U ( -0.772, -1.693) ( 2.601, 6.527) 0 2 6.0000 ( 3.100, -1.600) U ( -1.371, -1.280) ( -1.491, -5.993) 0 2 6.0000 ( 3.100, -1.600) S ( 7.050, 6.052) ( 8.614, 29.352) 0
- 7~11行目に関数の種類、ハンケル関数の関数列の最初の関数の次数、引数zの値、スケーリングオプション、ハンケル関数の値、アンダーフローによりゼロにセットされたハンケル関数の値の数が出力されています。
ソースコード
(本ルーチンの詳細はs17dlf のマニュアルページを参照)
※本サンプルソースコードは科学技術・統計計算ライブラリである「nAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
このソースコードをダウンロード |
PROGRAM s17dlfe ! S17DLF Example Program Text ! Mark 23 Release. nAG Copyright 2011. ! .. Use Statements .. USE nag_library, ONLY : nag_wp, s17dlf ! .. Implicit None Statement .. IMPLICIT NONE ! .. Parameters .. INTEGER, PARAMETER :: n = 2, nin = 5, nout = 6 ! .. Local Scalars .. COMPLEX (KIND=nag_wp) :: z REAL (KIND=nag_wp) :: fnu INTEGER :: ifail, ioerr, m, nz CHARACTER (1) :: scal ! .. Local Arrays .. COMPLEX (KIND=nag_wp) :: cy(n) ! .. Executable Statements .. WRITE (nout,*) 'S17DLF Example Program Results' ! Skip heading in data file READ (nin,*) WRITE (nout,*) WRITE (nout,99999) 'Calling with N =', n WRITE (nout,*) WRITE (nout,*) 'M FNU Z SCAL CY(1) ' // & ' CY(2) NZ' WRITE (nout,*) DATA: DO READ (nin,*,IOSTAT=ioerr) m, fnu, z, scal IF (ioerr<0) THEN EXIT DATA END IF ifail = 0 CALL s17dlf(m,fnu,z,n,scal,cy,nz,ifail) WRITE (nout,99998) m, fnu, z, scal, cy(1), cy(2), nz END DO DATA 99999 FORMAT (1X,A,I2) 99998 FORMAT (1X,I1,1X,F7.4,' (',F7.3,',',F7.3,') ',A, & 2(' (',F7.3,',',F7.3,')'),I4) END PROGRAM s17dlfe