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

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

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

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

概要

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

三次補間のデータ 

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

入力データ

(本ルーチンの詳細はe01tgf のマニュアルページを参照)
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

このデータをダウンロード
E01TGF Example Program Data
 30                      M, the number of data points
 0.80  0.23  0.37  0.51  X, Y, Z, F data point definition
 0.23  0.88  0.05  1.80
 0.18  0.43  0.04  0.11
 0.58  0.95  0.62  2.65
 0.64  0.69  0.20  0.93
 0.88  0.35  0.49  0.72
 0.30  0.10  0.78 -0.11
 0.87  0.09  0.05  0.67
 0.04  0.02  0.40  0.00
 0.62  0.90  0.43  2.20
 0.87  0.96  0.24  3.17
 0.62  0.64  0.45  0.74
 0.86  0.13  0.47  0.64
 0.87  0.60  0.46  1.07
 0.49  0.43  0.13  0.22
 0.12  0.61  0.00  0.41
 0.02  0.71  0.82  0.58
 0.62  0.93  0.44  2.48
 0.49  0.54  0.04  0.37
 0.36  0.56  0.39  0.35
 0.62  0.42  0.97 -0.20
 0.01  0.72  0.45  0.78
 0.41  0.36  0.52  0.11
 0.17  0.99  0.65  2.82
 0.51  0.29  0.59  0.14
 0.85  0.05  0.04  0.61
 0.20  0.20  0.87 -0.25
 0.04  0.67  0.04  0.59
 0.31  0.63  0.18  0.50
 0.88  0.27  0.07  0.71  End of data points
 6                       N, the number of evaluation points
 0.10  0.10  0.10        U, V, W evaluation point definition
 0.20  0.20  0.20
 0.30  0.30  0.30
 0.40  0.40  0.40
 0.50  0.50  0.50
 0.60  0.60  0.60        End of evaluation points 

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

出力結果

(本ルーチンの詳細はe01tgf のマニュアルページを参照)
1
2
3
4
5
6
7
8
9

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

      I     U(I)      V(I)      W(I)      Q(I)
      1    0.1000    0.1000    0.1000    0.2630
      2    0.2000    0.2000    0.2000    0.1182
      3    0.3000    0.3000    0.3000    0.0811
      4    0.4000    0.4000    0.4000    0.1552
      5    0.5000    0.5000    0.5000    0.3019
      6    0.6000    0.6000    0.6000    0.5712

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

ソースコード

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

※本サンプルソースコードは科学技術・統計計算ライブラリである「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
61
62
63
64
65
66
67
68
69

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

!      E01TGF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : e01tgf, e01thf, 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(:), qz(:),     &
                                          rq(:), u(:), v(:), w(:), x(:), y(:), &
                                          z(:)
       INTEGER, ALLOCATABLE            :: iq(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'E01TGF Example Program Results'

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

!      Input the number of nodes.

       READ (nin,*) m
       liq = 2*m + 1
       lrq = 10*m + 7
       ALLOCATE (x(m),y(m),z(m),f(m),iq(liq),rq(lrq))

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

!      Generate the interpolant.

       nq = 0
       nw = 0

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

!      Input the number of evaluation points.

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

!      Input the evaluation points.

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

!      Evaluate the interpolant using E01THF.

       ifail = -0
       CALL e01thf(m,x,y,z,f,iq,liq,rq,lrq,n,u,v,w,q,qx,qy,qz,ifail)

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

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

99999  FORMAT (1X,I6,4F10.4)
    END PROGRAM e01tgfe


関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks