Как рассчитать коэффициенты полинома с помощью интерполяции Лагранжа

Мне нужно рассчитать коэффициенты полинома с помощью Лагранжаинтерполяционный полиномВ качестве домашней работы я решаю сделать это в 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;
   };
}

Кто-нибудь знает алгоритм, чтобы сделать это, или идея, как рассчитать эти коэффициенты

Ответы на вопрос(1)

Ваш ответ на вопрос