Интерполяция в точке
Вопрос скорее больше по математической части. У меня задание: получать точку, в которой нужно интерполировать точечно заданную функцию. Есть пример:
public override double CalculateValue(double x)
{
var nmax = Values.Length - 1;
if (nmax < 0)
{
return base.CalculateValue(x);
}
if (x < 0)
{
return Values[0];
}
var n = (int)x;
return (n >= nmax) ? Values[nmax] : (Values[n] + (Values[n + 1] - Values[n]) * (x - n));
}
Я не понимаю принципа работы. Везде где ищу, нужны x и y массивы функции, а у меня получается только один массив. Что это за формула получается и как она вывелась? Гуглил по линейной интерполяции, там совсем другая формула, и там не нужна входная точка, а только лишь два массива данных.