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 2025 ExpyDoc