Keyword: 双3次, スプライン
概要
本サンプルは双3次スプラインの評価を行うFortranによるサンプルプログラムです。 本サンプルは以下に示されるデータについて双3次スプラインの値を求めて出力します。
※本サンプルはnAG Fortranライブラリに含まれるルーチン e02def() のExampleコードです。本サンプル及びルーチンの詳細情報は e02def のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本ルーチンの詳細はe02def のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
このデータをダウンロード |
E02DEF Example Program Data 11 10 PX PY 1.0 1.0 1.0 1.0 1.3 1.5 1.6 2.0 2.0 2.0 2.0 LAMDA(1) .. LAMDA(PX) 0.0 0.0 0.0 0.0 0.4 0.7 1.0 1.0 1.0 1.0 MU(1) .. MU(PY) 1.0000 1.1333 1.3667 1.7000 1.9000 2.0000 1.2000 1.3333 1.5667 1.9000 2.1000 2.2000 1.5833 1.7167 1.9500 2.2833 2.4833 2.5833 2.1433 2.2767 2.5100 2.8433 3.0433 3.1433 2.8667 3.0000 3.2333 3.5667 3.7667 3.8667 3.4667 3.6000 3.8333 4.1667 4.3667 4.4667 4.0000 4.1333 4.3667 4.7000 4.9000 5.0000 Spline coefficients, C 7 M 1.0 0.0 X(1), Y(1) 1.1 0.1 1.5 0.7 1.6 0.4 1.9 0.3 1.9 0.8 2.0 1.0 X(M), Y(M)
- 1行目はタイトル行で読み飛ばされます。
- 2行目にx方向のノット数(px)、y方向のノット数(py)を指定しています。
- 3行目に変数xに関するノット(lamda)を指定しています。
- 4行目に変数yに関するノット(mu)を指定しています。
- 5~11行目に双3次スプライン係数(c)を指定しています。
- 12行目にスプライン評価点の数(m)を指定しています。
- 13~19行目にスプラインの値が必要となる点のx座標、y座標を指定しています。
出力結果
(本ルーチンの詳細はe02def のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10
この出力例をダウンロード |
E02DEF Example Program Results I X(I) Y(I) FF(I) 1 1.000 0.000 1.000 2 1.100 0.100 1.310 3 1.500 0.700 2.950 4 1.600 0.400 2.960 5 1.900 0.300 3.910 6 1.900 0.800 4.410 7 2.000 1.000 5.000
- 3~10行目にインデックス、xの値、yの値、スプラインの値が出力されています。
ソースコード
(本ルーチンの詳細はe02def のマニュアルページを参照)
※本サンプルソースコードは科学技術・統計計算ライブラリである「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 50 51 52 53 54 55 56 57 58 59 60
このソースコードをダウンロード |
PROGRAM e02defe ! E02DEF Example Program Text ! Mark 23 Release. nAG Copyright 2011. ! .. Use Statements .. USE nag_library, ONLY : e02def, nag_wp ! .. Implicit None Statement .. IMPLICIT NONE ! .. Parameters .. INTEGER, PARAMETER :: nin = 5, nout = 6 ! .. Local Scalars .. INTEGER :: i, ifail, m, px, py ! .. Local Arrays .. REAL (KIND=nag_wp), ALLOCATABLE :: c(:), ff(:), lamda(:), mu(:), & wrk(:), x(:), y(:) INTEGER, ALLOCATABLE :: iwrk(:) ! .. Executable Statements .. WRITE (nout,*) 'E02DEF Example Program Results' ! Skip heading in data file READ (nin,*) ! Read PX and PY, the number of knots in the X and Y directions. READ (nin,*) px, py ALLOCATE (lamda(px),mu(py),c((px-4)*(py-4)),wrk(py-4),iwrk(py-4)) ! Read the knots LAMDA(1) .. LAMDA(PX) and MU(1) .. MU(PY). READ (nin,*) lamda(1:px) READ (nin,*) mu(1:py) ! Read C, the bicubic spline coefficients. READ (nin,*) c(1:(px-4)*(py-4)) ! Read M, the number of spline evaluation points. READ (nin,*) m ALLOCATE (x(m),y(m),ff(m)) ! Read the X and Y co-ordinates of the evaluation points. DO i = 1, m READ (nin,*) x(i), y(i) END DO ! Evaluate the spline at the M points. ifail = 0 CALL e02def(m,px,py,x,y,lamda,mu,c,ff,wrk,iwrk,ifail) WRITE (nout,*) WRITE (nout,*) ' I X(I) Y(I) FF(I)' WRITE (nout,99999) (i,x(i),y(i),ff(i),i=1,m) 99999 FORMAT (1X,I7,3F11.3) END PROGRAM e02defe