Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- using namespace std;
- double my_lagrange(double x, int n, double x_arr[], double y_arr[]);
- int main()
- {
- int n = 5;
- double x_arr[5] = {0.079, 0.637, 1.345, 2.095, 2.782};
- double y_arr[5] = {-4.308, -0.739, 1.697, 4.208, 6.203};
- for (double x = 0; x < 3; x += 1) {
- cout << "f(" << x << ") = "
- << my_lagrange(x, n, x_arr, y_arr) << endl;
- }
- system("pause");
- return 0;
- }
- double my_lagrange(double x, int n, double x_arr[], double y_arr[]) {
- //Пусть точки отсортированы по возрастанию координаты x
- if (n > 5)
- return (x <= x_arr[n / 2]) ? my_lagrange(x, (n + 1) / 2, x_arr, y_arr) :
- my_lagrange(x, (n + 1) / 2, &x_arr[n / 2], &y_arr[n / 2]);
- double sum = 0;
- for (int i = 0; i < n; ++i) {
- double l = 1;
- for (int j = 0; j < n; ++j)
- if (j != i)
- l *= (x - x_arr[j]) / (x_arr[i] - x_arr[j]);
- sum += y_arr[i] * l;
- }
- return sum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement