関連情報
ホーム > 製品 > NAG数値計算ライブラリ > NAG Fortranライブラリ > サンプルソースコード集 > 修正シェパード(Shepard)法を用いた二次補間

修正シェパード(Shepard)法を用いた二次補間

Fortranによるサンプルソースコード
使用ルーチン名:e01sgf

Keyword: 修正シェパード, Shepard, 二次補間

概要

本サンプルは修正シェパード(Shepard)法を用いた二次補間の生成を行うFortranによるサンプルプログラムです。 本サンプルは以下に示されるデータ点から補間値を求めて出力します。

二次補間のデータ 

※本サンプルはNAG Fortranライブラリに含まれるルーチン e01sgf() のExampleコードです。本サンプル及びルーチンの詳細情報は e01sgf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

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

このデータをダウンロード
E01SGF Example Program Data
 30                      M, the number of data points
 11.16    1.24   22.15   X, Y, F data point definition
 12.85    3.06   22.11
 19.85   10.72    7.97
 19.72    1.39   16.83
 15.91    7.74   15.30
  0.00   20.00   34.60
 20.87   20.00    5.74
  3.45   12.78   41.24
 14.26   17.87   10.74
 17.43    3.46   18.60
 22.80   12.39    5.47
  7.58    1.98   29.87
 25.00   11.87    4.40
  0.00    0.00   58.20
  9.66   20.00    4.73
  5.22   14.66   40.36
 17.25   19.57    6.43
 25.00    3.87    8.74
 12.13   10.79   13.71
 22.23    6.21   10.25
 11.52    8.53   15.74
 15.20    0.00   21.60
  7.54   10.69   19.31
 17.32   13.78   12.11
  2.14   15.03   53.10
  0.51    8.37   49.43
 22.69   19.63    3.25
  5.47   17.13   28.63
 21.67   14.36    5.52
  3.31    0.33   44.08   End of data points
 5                       N, the number of evaluation points
 20.00    3.14           U, V evaluation point definition
  6.41   15.44
  7.54   10.69
  9.91   18.27
 12.30    9.22           End of evaluation points 

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目にデータ点の数(m)を指定しています。
  • 3〜32行目にはデータ点の座標x、yとデータ値(f)を指定しています。
  • 33行目には評価点の数(n)を指定しています。
  • 34〜38行目に評価点(u,v)を指定しています。

出力結果

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

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

      I      U(I)      V(I)      Q(I)
      1     20.00      3.14     15.89
      2      6.41     15.44     34.05
      3      7.54     10.69     19.31
      4      9.91     18.27     13.68
      5     12.30      9.22     14.56

  • 3〜8行目に評価点と補間値が出力されています。

ソースコード

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

※本サンプルソースコードは科学技術・統計計算ライブラリである「NAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法


このソースコードをダウンロード
    PROGRAM e01sgfe

!      E01SGF Example Program Text

!      Mark 23 Release. NAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : e01sgf, e01shf, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: nin = 5, nout = 6
!      .. Local Scalars ..
       INTEGER                         :: i, ifail, liq, lrq, m, n, nq, nw
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: f(:), q(:), qx(:), qy(:), rq(:),     &
                                          u(:), v(:), x(:), y(:)
       INTEGER, ALLOCATABLE            :: iq(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'E01SGF Example Program Results'

!      Skip heading in data file
       READ (nin,*)

!      Input the number of data points

       READ (nin,*) m
       liq = 2*m + 1
       lrq = 6*m + 5
       ALLOCATE (x(m),y(m),f(m),iq(liq),rq(lrq))

       DO i = 1, m
          READ (nin,*) x(i), y(i), f(i)
       END DO

!      Generate the interpolant.

       nq = 0
       nw = 0

       ifail = 0
       CALL e01sgf(m,x,y,f,nw,nq,iq,liq,rq,lrq,ifail)

!      Input the number of evaluation points.

       READ (nin,*) n
       ALLOCATE (u(n),v(n),q(n),qx(n),qy(n))

       DO i = 1, n
          READ (nin,*) u(i), v(i)
       END DO

!      Evaluate the interpolant using E01SHF.

       ifail = 0
       CALL e01shf(m,x,y,f,iq,liq,rq,lrq,n,u,v,q,qx,qy,ifail)

       WRITE (nout,*)
       WRITE (nout,*) '     I      U(I)      V(I)      Q(I)'

       DO i = 1, n
          WRITE (nout,99999) i, u(i), v(i), q(i)
       END DO

99999  FORMAT (1X,I6,3F10.2)
    END PROGRAM e01sgfe


Results matter. Trust NAG.

Privacy Policy | Trademarks