[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Interpolation nach Newton

Sprache / Programm: Access ab Version 2000 · Excel ab Version 2000
Beschreibung

Interpoliert einen Wert t zwischen n Werten mit einem Interpolationspolynom n-1 Grades nach dem Verfahren von Newton

VBA-Quelltext
' Die Funktion untersucht die übergebenen Arrays und ermittelt
' aus n Elementen von [Zeit] und [Werte] ein Polynom n-1 Grades,
' setzt [t] ein und gibt den interpolierten Wert zurück
Public Function Interpolation(Zeit, Werte, t As Double) As Double
    Dim i As Long, j As Long
   
    ' Interpolation nach Newton
    For i = LBound(Werte) To UBound(Werte)
        For j = UBound(Werte) To i + 1 Step -1
            Werte(j) = (Werte(j) - Werte(j - 1)) / (Zeit(j) - Zeit(j - i - 1))
        Next j
    Next i
   
    ' Hornerschema anwenden, um Interpolationspolynom auszuwerten
    Interpolation = 0
    For i = UBound(Werte) To LBound(Werte) Step -1
        Interpolation = Interpolation * (t - Zeit(i)) + Werte(i)
    Next i
   
End Function


' Diese Funktion arbeitet nur In Excel und wird als Tabellenfunktion eingesetzt
Public Function Interpolation(ZeitBereich As Range, WertBereich As Range, t As Double) As Double
    Dim i As Long, j As Long, Werte() As Double, n As Long
   
    n = WertBereich.Cells.Count
    ReDim Werte(1 To n)
    For i = 1 To n
        Werte(i) = WertBereich(i)
    Next i
   
   
    ' Interpolation nach Newton
    For i = 1 To n
        For j = n To i + 1 Step -1
            Werte(j) = (Werte(j) - Werte(j - 1)) / (ZeitBereich(j) - ZeitBereich(j - i))
        Next j
    Next i
   
    ' Hornerschema anwenden, um Interpolationspolynom auszuwerten
    Interpolation = 0
    For i = n To 1 Step -1
        Interpolation = Interpolation * (t - ZeitBereich(i)) + Werte(i)
    Next i
   
End Function
Argumente der Funktion/Prozedur

Zeit

Zeit oder x-Werte als Array() von Zahlen

Werte

y-Werte als Array von Zahlen

t

Stützstelle (x) zu der ein Stützwert (y) interpoliert werden soll

Anwendungsbeispiel(e)...

Siehe mein Beitrag Einsatz von Klassenmodulen

Hinweis

Hier sind zwei Funktionen angegeben:

  1. Die erste Funktion ist eine reine VBA-Funktion. Sie erwartet als Argumente Arrays und liefert einen Interploantionswert zurück.

  2. Die zweite Funktion ist nur für Excel und so programmiert, dass sie auch als Tebellenfunktion genutzt werden kann.