Besser als sonst wenn sonst ... für lineare Interpolation

Frage ist einfach. Nehmen wir an, Sie haben eine Funktion

double interpolate (double x);

und Sie haben eine Tabelle mit einer Karte von bekannten x-> y
zum Beispiel
5 15
7 18
10 22
Hinweis: Echte Tische sind größer. Dies ist nur ein Beispiel.

Für 8 würden Sie also 18 + ((8-7) / (10-7)) * (22-18) = 19.3333333 zurückgeben

Ein cooler Weg, den ich gefunden habe, isthttp://www.bnikolic.co.uk/blog/cpp-map-interp.html (Kurz gesagt, es wird std :: map, key = x, value = y für x-> y-Datenpaare verwendet).

Wenn jemand fragt, was ist das, wenn sonst, wenn anders als im Titel, dann ist es im Grunde:

if ((x>=5) && (x<=7))
{
//interpolate
}
else 
     if((x>=7) && x<=10)
     {
      //interpolate
     }

Gibt es also eine klügere Möglichkeit, dies zu tun, oder ist die Karte auf dem neuesten Stand der Technik? :)

Übrigens bevorzuge ich Soutions in C ++, aber offensichtlich ist jede Sprachlösung, die eine 1: 1-Zuordnung zu C ++ hat, nett.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage