Как рассчитать коэффициенты полинома с помощью интерполяции Лагранжа
Мне нужно рассчитать коэффициенты полинома с помощью Лагранжаинтерполяционный полиномВ качестве домашней работы я решаю сделать это в Javascript.
вот определение полинома Лагранжа (L (x))
Базисные полиномы Лагранжа определяются следующим образом
Вычислить значение y для конкретной функции X (W (x)) просто, но мне нужно вычислить коэффициенты полинома (массив [a0, a1, ..., an]) Мне нужно сделать это для n <= 10, но это было бы неплохо иметь произвольное n, тогда я могу поместить эту функцию в функцию хорнера и нарисовать этот полином.
У меня есть функция, которая вычисляет знаменатель в первом уравнении
function denominator(i, points) {
var result = 1;
var x_i = points[i].x;
for (var j=points.length; j--;) {
if (i != j) {
result *= x_i - points[j].x;
}
}
return result;
}
и функция, которая возвращает у, используя метод Хорнера (у меня также есть функция рисования, используя холст)
function horner(array, x_scale, y_scale) {
function recur(x, i, array) {
if (i == 0) {
return x*array[0];
} else {
return array[i] + x*recur(x, --i, array);
}
}
return function(x) {
return recur(x*x_scale, array.length-1, array)*y_scale;
};
}
Кто-нибудь знает алгоритм, чтобы сделать это, или идея, как рассчитать эти коэффициенты