5.2 グレゴリー・ニュートン(Gregory-Newton)の補間式 (1)導入 次のような点列に対する補間式を考える。 点列を代入すると,代入の繰返しで係数を求めることができる。
[参考] 概念的には,多項式補間を次のような三角行列に変換したことと同じ。 また であるから多項式補間より係数の絶対値の比率は一般に小さくなる。
(2)等間隔法① 表データは,独立変数を等間隔に並べていることが多いので,点間の幅を とすると,
(2)等間隔法② 係数を求めると
コーヒーブレーク(Pascalの三角形を思い出そう) (2)等間隔法③ 次のような記法を導入 コーヒーブレーク(Pascalの三角形を思い出そう) さらに次のようにおく 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
(2)等間隔法④ 整理すると この式をグレゴリ・ニュートンの補間式と呼ぶ
(3)例 計算すると(ただしExcelで定義しよう) X(度) sin(X) 0 0.0000 10 0.17365 20 0.34202 30 0.50000 40 0.64279
(4)Excelでの定義
VBAでのプログラム ①データ設定とボタンのClickイベントハンドラ Private X(5) As Double Private FY(5) As Double Private UX As Double Sub データ設定() XX = 0: DX = 10 For i = 1 To 5 X(i) = XX: FY(i) = Sin(XX * 3.1415926 / 180) XX = XX + DX Next UX = (22 - X(1)) / DX End Sub Sub ボタン1_Click() データ設定 R = Gregory(FY, UX, 5) MsgBox " 結果=" & R
VBAでのプログラム ②組合せ数と階乗の計算 Function Comb(N, R) As Long '組合せ回数の計算 If R = 0 Or R = N Then Comb = 1 ElseIf R = 1 Then Comb = N Else Comb = Comb(N - 1, R - 1) + Comb(N - 1, R) End If End Function Function Fact(N) As Double '階乗の計算 Dim D As Double D = 1 For i = 2 To N D = D * i Next Fact = D
VBAでのプログラム ③差分計算と補間計算 Function 差分計算(i, FY) As Double A = 0: Sign = 1 For k = i To 2 Step -1 C = Comb(i - 1, k - 1) A = A + C * Sign * FY(k) Sign = -Sign Next 差分計算 = A + Sign * FY(1) End Function Function 補間計算(i, UX) As Double U = UX: T = 1 For k = 2 To i T = T * U: U = U - 1 補間計算 = T
VBAでのプログラム ④クレゴリ・ニュートンの補間式の計算 Function Gregory(FY, UX, N) T = 0 For i = 1 To N A = FY(1): ii=i If i >= 2 Then A = A = 差分計算(i, FY) * 補間計算(i, UX)/ Fact(ii) T = T + A Next Gregory = T End Function
[補足] 例題のプログラムの問題点 Function Comb2(N, R) As Long 組合せ個数を計算するのに, [補足] 例題のプログラムの問題点 Function Comb2(N, R) As Long Dim A() As Double ReDim A(N) NN = N: RR = R If NN - RR < RR Then RR = N - R If RR = 0 Then Comb2 = 1 ElseIf RR = 1 Then Comb2 = N Else For i = 2 To RR A(i) = i + 1 Next For i = 1 To NN - R - 1 A(1) = i + 2 For j = 2 To RR A(j) = A(j - 1) + A(j) Comb2 = A(RR) End If End Function 組合せ個数を計算するのに, nC0=nCn=1, nC1=n, nCr=n-1Cr-1+n-1Cr の定義どおり処理しているが, たとえば,10C5を求めるのに9C4と9C5を使い, さらに9C5を求めるにも8C4を使う。 このようにまったく同じ計算が何回も出てくる。 左のプログラムでは, nC1から計算して, 結果を配列に保存することで, 無駄な計算を省いている。
課題1 以下のデータは,ある斜面の高さを100m間隔で測定した結果である。グレゴリーニュートンのプサンプルログラムを用いて,250m位置の高さを求めよ。
課題2 高さhと角度θを示す衛星の軌道データは以下のとおりである。 このデータを用いて,t=1,200秒の衛星位置(高さとθ)を推定せよ 。 なお,時間tは衛星が軌道に入った後の時間とする。 衛星 高さ θ 地球
課題3 バリスタ(非線形抵抗器)の電圧・電流を測定したところ以下のようになった。 このバリスタの特性を示す3次補間式を作れ。