Собственной сам себе отвечаю...Написал программу но при степени полинома 1 вторая производная вообще не считается(возвращает 0), а при степени 2 огромная погрешность. Корректные значения получаются только при n=3 или больше. Если кто-то знает причину прошу ответьте)
Код:
double diff_2(double* x, double* y, int n, const double _x) //функция возвращает значение производной функции в точке _x
{
double result = 0;
for (int i = 0; i < n + 1; i++)
{
double result_3 = 0;
for (int j = 0; j < n + 1; j++)
{
double result_2 = 0;
if (j != i)
{
for (int l = 0; l < n + 1; l++)
{
if (l != i && l != j)
{
double P = 1;
for (int k = 0; k < n + 1; k++)
{
if (k != i && k != j && k != l)
{
P *= (_x - x[k]) / (x[i] - x[k]);
}
}
result_2 += P / (x[i] - x[l]);
}
}
result_3 += result_2/ (x[i] - x[j]);
}
}
result += y[i] * result_3;
}
return result;
}