5.補間法
表に現れていないデータから
任意の独立変数に対する
関数値を求める
応用分野
• 数表に与えられていない任意の値を読み
取る。
• 等高線データからメッシュの値を埋める。
• 線の間を滑らかに結ぶ。
5.1 線形補間と多項式補間
(1)線形補間
• 与えられたデータ間を直線で近似する。
x2 x1
f ( x) f ( x1 )
x x1
f ( x2 ) f ( x1 )
( x x1 )
x2 x1
f ( x2 )
f ( x2 ) f ( x1 )
f (x )
f ( x) f ( x1 )
f ( x1 )
x1
x
x2
線形補間の例
• 関数表から値を読み取る
X(度) sin(X)
0
0.0000
10
0.17365
20
0.34202
30
0.50000
40
0.64279
0.50000 0.34202
f (22 ) 0.34202
(22 20)
30 20
0.37362
真値
f (22 ) 0.37461
(2)多項式補間
• 次のような補間多項式で近似できるものとする。
f ( x) a0 a1 x a2 x 2 an x n
連立方程式
1 x1
1 x2
1 x3
1 x
n 1
x12
x22
x32
xn21
x1n a0 f ( x1 )
x2n a1 f ( x2 )
x3n a2 f ( x3 )
xnn1 an f ( xn 1 )
を解いて a0 , a1 , a2 ,, an を求め
f ( x) a0 a1 x a2 x 2 an x n
で計算する。
放物線補間
(電卓で確かめてみよう)
a0 30a1 900a2 0.50000
a0 20a1 400a2 0.34202
a0 10a1 100a2 0.17365
10a1 500a2 0.15798
10a1 300a2 0.16837
X(度) sin(X)
0
0.0000
10
0.17365
20
0.34202
30
0.50000
40
0.64279
2a2 0.00005195
0.15798 500a2 0.15798 0.025975
0.0183955
10
10
a0 0.17365 100a2 10a1 0.17365 0.005195 0.183955 0.00511
a1
0.00511 0.0183955 22 0.00005195 22 2 0.374447
真値 f (22 ) 0.37461
線形補間の 0.37362 より真値に近い
VBAで多項式補間をやってみよう
Excelでデータ入力
VBAでのプログラム
①データ設定
Private Function データ設定()
N = 5: N1 = N + 1
ReDim A(N, N1)
N1 = N + 1
With Worksheets("Sheet1")
For i = 1 To N
X = Val(.Cells(i + 1, 1))
A(i, 1) = 1
For j = 2 To N
A(i, j) = A(i, j - 1) * X
Next
A(i, N1) = Val(.Cells(i + 1, 2))
Next i
End With
データ設定 = N
End Function
1
xi xi2 xin の設定
f ( xi ) の設定
VBAでのプログラム
②結果表示とボタンのクリックイベントハンドラ
Private Sub 結果表示(Y, N)
N1 = N + 1
With Worksheets("Sheet1")
.Cells(2, 4) = Y
For i = 1 To N
.Cells(i + 1, 6) = Right(Space(12) & Format(A(i, N1), "0.00000E+00"), 12)
Next i
End With
End Sub
Sub ボタン1_Click()
N = データ設定()
If N >= 2 Then
R = 掃出法(A, N, 0.000001)
X = Val(Worksheets("Sheet1").Cells(2, 3))
Y = 近似計算(X, N)
結果表示 Y, N
End If
End Sub
VBAでのプログラム
近似計算
Private Function 近似計算(X, N) As Double
N1 = N + 1: XX = 1: T = 0
For i = 1 To N
T = T + XX * A(i, N1)
XX = XX * X
Next i
近似計算 = T
End Function
課題1
以下の表は地表から垂直に打ち上げたロケットのデータである。
時間(sec)
速度(m/sec)
0
0.0000
60
0.0824
120
0.2747
180
0.6502
240
1.3851
300
3.2229
① 時間150secのときの速度を,線形補間で求めよ。
f (150) f (120) 150 120
[ヒント]
f (180) f (120)
180 120
② 時間150secのときの速度を,放物線補間で求めよ。
[ヒント]
a1 60 2 a2 60 a3 f (60)
a1 120 2 a2 120 a3 f (120)
a1 180 2 a2 180 a3 f (180)
なお,これらの補間はExcelの式として定義して求めよ。
課題2
以下のデータは,ある斜面の高さを100m間隔で測定した結果である。サンプルプ
ログラムを用いて,5次式補間により250m位置の高さを求めよ。
位置(m)
高さ(m)
0
185
100
186
200
188
300
190
400
191
500
192
素直に考えると以下のようになるが,先頭のデータが非常に大きくなるので,誤差が大きくなる。
したがって位置の単位に工夫が必要である。この工夫についても述べよ。
a1 05
a2 0 4
a3 03
a4 0 2
a1 1005
a2 100 4
a3 1003
a4 100 2
a5 0
a6
a5 100 a6
f (0)
f (100)
a1 2005 a2 200 4 a3 2003 a4 200 2 a5 200 a6 f (200)
a1 3005 a2 300 4 a3 3003 a4 300 2 a5 300 a6 f (300)
a1 4005 a2 400 4 a3 4003 a4 400 2 a5 400 a6 f (400)
a1 5005 a2 500 4 a3 5003 a4 500 2 a5 500 a6 f (500)
© Copyright 2026 ExpyDoc