Как исправить проблему, избегая получения значения "Nan" при выполнении расчетов алгоритма интерполяции по заданным точкам данных?
Одна из распространенных проблем при использовании интерполяции Лагранжа - это возможность деления на ноль или получения недопустимых значений при вычислении коэффициентов интерполяционного полинома. Это может привести к тому, что результатом будет значение "NaN". Чтобы избежать этой проблемы, следует проверить точки данных на наличие повторяющихся или совпадающих значений в алгоритме интерполяции Лагранжа. Также необходимо убедиться, что все точки данных уникальны и не лежат на одной прямой, чтобы избежать деления на ноль. Если данные условия не могут быть выполнены, то необходимо использовать другой метод интерполяции, например, интерполяцию сплайнами. Этот метод может быть более устойчив к наличию повторяющихся точек данных или значений, которые лежат на одной прямой.
У вас там во входных данных 2 точки с одинаковым x (23) и разным y (18, 11). В результате получается деление на 0.
Нельзя инетрполировать такие данные полиномом. Ибо это функция от x - для каждого x одно значение y.
Ошибка не в программе, а в некорректных входных данных.
Можно интерполировать параметрически, если хотите. Заведите параметр t и ищите две функции x(t), y(t) - скармливайте этой программе 2 набора данных 1,x1;2,x2;3,x3...n;xn и 1,y1;2,y2;...n,yn.
Тогда у вас будет кривая заданная двумя полиномами, проходящая через заданные точки в заданном порядке.