標題:
[分享]
內插
[打印本頁]
作者:
呆呆
時間:
2011-2-9 17:04
標題:
內插
最近有點無聊,想到以前學的一些數數學函數
其中有一種叫內插,或許有些人認為,內插應該很簡單吧
國中生就會了,但那個是線性內插
我在這裡提供一種叫拉格朗日插值法,
我把sin函數的1,2,3,4,5度的值列出各為
1度 0.0174524
2度 0.0348994
3度 0.0523359
4度 0.0697564
5度 0.0871557
假設前題是,我們並不知道這5個值是 sin 函數值, 那我要求 3.5度的值要怎麼辦
作者:
呆呆
時間:
2011-2-9 17:07
我不想在去做數學證明,我們只把它當成是應用
方便我們做任何多數點中的內插
以下就是程式碼
Option Explicit
Public Sub Interpolation()
Dim x(1 To 5) As Double
Dim y(1 To 5) As Double
Dim i As Integer
Dim j As Integer
Dim Ratio As Double
Dim X_Value As Double
Dim Y_Value As Double
For i = 1 To UBound(x)
x(i) = i
Next i
y(1) = 0.0174524
y(2) = 0.0348994
y(3) = 0.0523359
y(4) = 0.0697564
y(5) = 0.0871557
X_Value = 3.5
Y_Value = 0
For i = 1 To UBound(x)
Ratio = 1
For j = 1 To UBound(x)
If i <> j Then
Ratio = Ratio * (X_Value - x(j)) / (x(i) - x(j))
End If
Next j
Y_Value = Y_Value + Ratio * y(i)
Next i
MsgBox Y_Value
End Sub
複製代碼
作者:
呆呆
時間:
2011-2-9 17:13
這時我們得知 求得 y_value 值為 0.0610484820
實際上我們去按計算機為 sin3.5 為 0.06104853
誤差率極為小,這是我們在 1到5度的範為內取的點相當的多
如果我們在1度和5度之間只有2個值,那就是線性內插3.5度值
那誤差就相當大了,提供給各位參考
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)