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.