вопрос прост. Допустим, у вас есть функция
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:: map, key = x, value = y для x- > y пар данных).
Если кто-то спрашивает, что такое if else, если иначе в заголовке это в основном:
if ((x>=5) && (x<=7))
{
//interpolate
}
else
if((x>=7) && x<=10)
{
//interpolate
}
Так есть ли более умный способ сделать это или наметить способ - это современное состояние?:)
Btw Я предпочитаю soutions в С++, но, очевидно, любое языковое решение, которое имеет сопоставление 1:1 на С++, приятно.