вопрос легкий. Допустим, у вас есть функция
double interpolate (double x);
и у вас есть таблица с известной картой x -> y
например
5 15
7 18
10 22
примечание:реальные таблицы больше, это просто пример.
поэтому для 8 вы вернете 18+ ((8 -7 )/ (10 -7 ))*(22 -18 )= 19,3333333
Один классный способ, который я нашел, этоhttp://www.bnikolic.co.uk/blog/cpp-map-interp.html (Короче говоря, он использует карту std ::, ключ = x, значение = y для пар данных x -> y ).
Если кто-то спросит, что такое if else if else в заголовке это в основном:
if ((x>=5) && (x<=7))
{
//interpolate
}
else
if((x>=7) && x<=10)
{
//interpolate
}
Так есть ли более умный способ сделать это или способ карты - это современное состояние?:)
Кстати, я предпочитаю решения на C++, но очевидно, что любое языковое решение, имеющее 1 :1 сопоставление с C++, хорошо.