Mejor manera que si no si no si no ... para interpolación lineal
la pregunta es fácil Digamos que tienes función
double interpolate (double x);
y tienes una tabla que tiene un mapa de x-> y conocido
por ejemplo
5 15
7 18
10 22
Nota: Las tablas reales son más grandes, esto es solo un ejemplo.
así que para 8 devolvería 18 + ((8-7) / (10-7)) * (22-18) = 19.3333333
Una manera genial que encontré eshttp://www.bnikolic.co.uk/blog/cpp-map-interp.html (cuento largo, usa std :: map, key = x, value = y para x-> y pares de datos).
Si alguien pregunta cuál es la forma en el título, si no es así, en el título es básicamente:
if ((x>=5) && (x<=7))
{
//interpolate
}
else
if((x>=7) && x<=10)
{
//interpolate
}
Entonces, ¿hay una forma más inteligente de hacerlo o de hacer un mapa de la forma actual? :)
Por cierto, prefiero soutions en C ++ pero obviamente cualquier solución de lenguaje que tenga un mapeo 1: 1 a C ++ es buena.