Keyword: チェビシェフ級数, 2変数多項式
概要
本サンプルはチェビシェフ級数形式の2変数多項式を求めるFortranによるサンプルプログラムです。 本サンプルは以下に示されるデータを含む引数を読み込み、チェビシェフ級数形式の2変数多項式を計算し出力します。
※本サンプルはnAG Fortranライブラリに含まれるルーチン e02cbf() のExampleコードです。本サンプル及びルーチンの詳細情報は e02cbf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はe02cbf のマニュアルページを参照)| このデータをダウンロード |
E02CBF Example Program Data .FALSE. : output data for plotting 3 2 20 : k, l, m=no of output points. 15.34820 5.15073 -2.20140 1.14719 -0.64419 0.30464 -0.49010 -0.00314 -6.69912 0.00153 3.00033 -0.00022 : Chebyshev coefficients 0.0 4.0 0.1 4.5 : ymin ymax xmin xmax
- 1行目はタイトル行で読み飛ばされます。
- 2行目にプロット用のデータを出力するかどう(plot)を指定しています。".FALSE."は出力しないことを意味します。
- 2行目に変数xの次元(k)、変数yの次元(l)、出力するデータ点の数(m)を指定しています。
- 4〜15行目に多項式のチェビシェフ係数(a)を指定しています。
- 16行目に変数yの下限(ymin)と上限(ymax)、変数xの下限(xmin)と上限(xmax)を指定しています。
出力結果
(本ルーチンの詳細はe02cbf のマニュアルページを参照)| この出力例をダウンロード |
E02CBF Example Program Results Y = 0.1053E+01 I X(I) Poly(X(I),Y) 1 1.0000E-01 7.3827E+00 2 1.2000E+00 -2.7648E-01 3 2.3000E+00 -2.2541E-01 4 3.4000E+00 3.2750E+00 5 4.5000E+00 5.9637E+00 Y = 0.2316E+01 I X(I) Poly(X(I),Y) 1 1.0000E-01 1.0752E+01 2 1.2000E+00 2.6132E+00 3 2.3000E+00 -8.3004E-01 4 3.4000E+00 1.8462E+00 5 4.5000E+00 1.2066E+01 Y = 0.3579E+01 I X(I) Poly(X(I),Y) 1 1.0000E-01 1.1902E+00 2 1.2000E+00 8.8478E+00 3 2.3000E+00 7.4980E+00 4 3.4000E+00 4.2491E+00 5 4.5000E+00 6.2093E+00
- 3行目にy座標の値が出力されています。
- 5〜10行目にインデックス、xの値、多項式の値が出力されています。
- 12行目にy座標の値が出力されています。
- 14〜19行目にインデックス、xの値、多項式の値が出力されています。
- 21行目にy座標の値が出力されています。
- 23〜28行目にインデックス、xの値、多項式の値が出力されています。
ソースコード
(本ルーチンの詳細はe02cbf のマニュアルページを参照)
※本サンプルソースコードは科学技術・統計計算ライブラリである「nAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法
| このソースコードをダウンロード |
PROGRAM e02cbfe
! E02CBF Example Program Text
! Mark 23 Release. nAG Copyright 2011.
! .. Use Statements ..
USE nag_library, ONLY : e02cbf, nag_wp
! .. Implicit None Statement ..
IMPLICIT NONE
! .. Parameters ..
INTEGER, PARAMETER :: nin = 5, nout = 6
! .. Local Scalars ..
REAL (KIND=nag_wp) :: xmax, xmin, y, ymax, ymin
INTEGER :: i, ifail, j, k, l, m, m1, m2, &
mfirst, mlast, na, nwork
LOGICAL :: plot
! .. Local Arrays ..
REAL (KIND=nag_wp), ALLOCATABLE :: a(:), ff(:), work(:), x(:)
! .. Intrinsic Functions ..
INTRINSIC min, real
! .. Executable Statements ..
! Skip heading in data file
READ (nin,*)
READ (nin,*) plot
IF ( .NOT. plot) THEN
WRITE (nout,*) 'E02CBF Example Program Results'
END IF
READ (nin,*) k, l, m
IF (plot) THEN
m1 = 1
m2 = m
mlast = m
ELSE
m1 = (2*m+3)/7
m2 = (6*m+3)/7 + 1
mlast = min(5,m)
END IF
na = (k+1)*(l+1)
nwork = k + 1
ALLOCATE (x(mlast),ff(mlast),a(na),work(nwork))
READ (nin,*) a(1:na)
READ (nin,*) ymin, ymax, xmin, xmax
x(1:mlast) = xmin + (xmax-xmin)*real((/(j-1,j=1,mlast)/),kind=nag_wp)/ &
real(mlast-1,kind=nag_wp)
mfirst = 1
DO i = m1, m2, m1
y = ymin + ((ymax-ymin)*real(i-1,kind=nag_wp))/real(m-1,kind=nag_wp)
ifail = 0
CALL e02cbf(mfirst,mlast,k,l,x,xmin,xmax,y,ymin,ymax,ff,a,na,work, &
nwork,ifail)
IF (plot) THEN
DO j = 1, mlast
WRITE (nout,99998) y, x(j), ff(j)
END DO
WRITE (nout,*)
ELSE
WRITE (nout,*)
WRITE (nout,99999) 'Y = ', y
WRITE (nout,*)
WRITE (nout,*) ' I X(I) Poly(X(I),Y)'
DO j = 1, mlast
WRITE (nout,99997) j, x(j), ff(j)
END DO
END IF
END DO
99999 FORMAT (1X,A,E13.4)
99998 FORMAT (1X,1P,2E13.4,1P,2E13.4)
99997 FORMAT (1X,I3,1P,2E13.4)
END PROGRAM e02cbfe
