Hallo,
wenn ich mich nicht irre, dann stimmt deine Interpolationsformel nicht.
Mit deinem Code bemerkst du, dass der Wert bei (i+1) zu klein ist und benutzt die Stützstellen (i-1) und (i+2) zum interpolieren. Geht wahrscheinlich in vielen Fällen.
Es stellen sich mir allerdings folgende Fragen:
Warum benutzt die Stützstelle (i-1) zur Berechnung, wo doch (i) näher an der zu ermittelnden (i+1) liegt?
Hast du dir überlegt, was passiert, wenn der Wert (i+2) ebenfalls ein zu kleiner Wert ist?
Um den Fall abzudecken, dass zwei zu kleine Werte aufeinander folgen( (i+1) also ein falscher Wert ist), würde ich die Stützstellen (i-1) und (i) verwenden, um den Wert für (i+1) zu interpolieren/extrapolieren, denn von den beiden weißt du ja, dass sie stimmen:
cells(i+1,7) = cells(i-1,7) + (cells(i,7)-cells(i-1,7)) / _
(cells(i,1)-cells(i-1,1)) * _
(cells(i+1,1)-cells(i-1,1))
Voraussetzung für den von mir vorgeschlagenen Code ist, dass die ersten beiden Werte stimmen.
Grüße, Ulrich
PS: der Code ist ungetestet.
|