Como calcular coeficientes de polinômios usando a interpolação de Lagrange

Preciso calcular coeficientes de polinômio usando Lagrange polinomial de interpolação, como dever de casa, decido fazer isso em Javascript.

aqui é a definição de polinômio de Lagrange (L (x))

s polinômios de base do intervalo são definidos da seguinte form

Calcular o valor y para a função específica X (W (x)) é simples, mas preciso calcular os coeficientes do polinômio (matriz de [a0, a1, ..., an]), preciso fazer isso para n <= 10, mas será bom ter n arbitrário, então eu posso colocar essa função na função horner e desenhar esse polinômi

Tenho uma função que calcula o denominador na primeira equação

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;
}

e função que retorna y usando o método horner (também tenho função de desenho usando canvas)

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;
   };
}

lguém sabe algoritmo para fazer isso, ou idéia de como calcular esses coeficientes