Мне нужно вычислить коэффициенты полинома, используя Lagrange интерполяционный многочлен, как моя домашняя работа, я решил сделать это в Javascript.
- это определение многочлена Лагранжа (L (x))
Лагранжевы базисные полиномы определяются следующим образом:
Вычислить значение y для конкретной функции X (W (x)) просто, но мне нужно рассчитать коэффициенты полинома (массив из [a0, a1,..., an]). Мне нужно сделать это с n <= 10, но будет хорошо иметь произвольное n, тогда я могу поместить эту функцию в функцию horner и нарисовать этот многочлен.
У меня есть функция, которая вычисляет знаменатель в первом уравнении
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;
}
и функцию, возвращающую y с помощью метода horner (у меня также есть функция рисования с использованием холста)
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;
};
}
кто-нибудь знает алгоритм для этого, или идею, как вычислить эти коэффициенты