Calculate the Lagrange polynomial
Consider passing in the array size rather than fixing it at 6 in the polynomial(), nodeSuccession() functions.

// polynomial(xVal, xNode, yNode)
polynomial(6, xVal, xNode, yNode)



Minor stuff


Two backspaces may not truly "back-space".  Less problematic to not print unwanted text.  Various solutions. Perhaps as below.

const char *separator = "";
printf("xNode [");
for (i = 0; i &lt; GRADE + 1; i++) {
  xNode[i] = i;
  printf("%s%.4f", separator, xNode[i]);
  yNode[i] = 0;
  separator = ", ";
}
printf("\n");

The various calls to like code suggest that a helper print function should be written.
For printing double, I find %e more informative than %f.
Rather than allocate to the size of the type, allocate to the size of the de-referenced pointer.  It easier to code correctly, review and maintain.  Putting the sizeof part first insures any integer math is done with at least size_t width.  Checking for a NULL allocation makes for robust code.

// sum = malloc(GRADE * sizeof(double));
sum = malloc(sizeof *sum * GRADE);
if (sum == NULL) TBD();

Use const with the pointers to insure wider application of the function and allow optimizations the compiler may not readily recognize.

// double* polynomial(double *xVal, double *xNode, double *yNode){
double* polynomial(const double *xVal, const double *xNode, const double *yNode){

// double* error(double *xVal, double *sum)
double* error(const double *xVal, const double *sum)

Help convey the double-ness of the variable.

// sum[j] = 0;  // This looks `int`-ish
sum[j] = 0.0;