Производная от многочлена Ньютона с++

есть код такой вот код , приближаю функцию многочленном Лагранжа , нужна производная от такого многочлена в точке с = (2pi/2)+0.2 как можно ее задать в с++?

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

const int N = 5;
const double pi = 3.14159265358979;
float c = (2 * pi / 2) + 0.2;

void p(float x_arr[N + 1])
{

for (int i = 0; i < N + 1; i++)
    cout << x_arr[i] << " " << endl;

cout << endl;
}





 void nd(float x_arr[N + 1], float a, float b) //функция для построения 
 массива в узлах равномерной сетки
 {
 float h = (b - a) / N;

 for (int i = 0; i < N + 1; i++)
 {
    x_arr[i] = a;
    a += h;

}
}

void func_v(float y_arr[N + 1], float x_arr[N + 1]) // функция для построение 
массива состоящего из значений функции в заданных узлах
{

for (int i = 0; i < N + 1; i++)
    y_arr[i] = sin(x_arr[i]);

}


float Newton(double c, int N, float x_arr[], float y_arr[]) // функция 
 интерполирования многочленом Ньютона
{ 

double sum = y_arr[0];
for (int i = 1; i < N; ++i) {

    double F = 0;
    for (int j = 0; j <= i; ++j) {

        double den = 1;
        for (int k = 0; k <= i; ++k)
            if (k != j)
                den *= (x_arr[j] - x_arr[k]);

        F += y_arr[j] / den;
    }

    // (x-x[0])...(x-x[i-1])
    for (int k = 0; k < i; ++k)
        F *= (c - x_arr[k]);  //x
    sum += F;
  }
  return sum;
  }

 float diff(float c) //Функция производной 
 {

 return -sin(c);

 }


 float error(float c, float x_arr[ N + 1 ]) // погрешность
 {
float p = 1; float g = 1;

for (int i = 1; i < N + 2; i++)
    p *= i;

for (int i = 0; i < N + 1; i++)
    g *= (c - x_arr[i]);

return diff(c) / (p * (g));
 } 



int main() {

setlocale(0, "");


const int N = 5;
const double pi = 3.14159265358979;
float a = 0;
float b = 2 * pi;
float x_arr[N], y_arr[N];
float h = (b - a) / N;




nd(x_arr, a, b);
cout << "Получены следующие значения узлов сетки " << endl;
p(x_arr);
cout << endl;
func_v(y_arr, x_arr);
cout << "Получены следующие значения функции " << endl;
p(y_arr);
cout << endl;


cout << endl;
cout << setw(12) << "Newton(c) = ";
cout <<  Newton(c, N, x_arr, y_arr);
cout << endl;
cout  << "sin(c) = ";
cout <<  sin(c);
cout << endl;
cout << "Pog = ";
cout << error(c, x_arr);
cout << endl;
cout << "c = ";
cout << c;
cout << endl;
cout << endl;

}

Ответы (0 шт):