Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <vector>
- #include <cmath>
- using namespace std;
- vector <int> x, y;
- double P(double x)
- {
- return (-x * x * x / 6.0) + (3 * x * x / 2.0) - (x / 3.0) + 10.0;
- }
- double L(double x0)
- {
- double res = 0;
- for (int i = 0; i < x.size(); ++i)
- {
- double cur = 1.0;
- for (int j = 0; j < y.size(); ++j)
- if (i != j) cur *= (x0 - x[j]) / (x[i] - x[j]);
- res += y[i] * cur;
- }
- return res;
- }
- double N(double x0)
- {
- vector <vector <double>> table(y.size(), vector <double>(y.size()));
- for (int i = 0; i < y.size(); ++i)
- table[i][0] = y[i];
- for (int j = 1; j < y.size(); ++j)
- for (int i = 0; i < y.size() - j; ++i)
- table[i][j] = (table[i + 1][j - 1] - table[i][j - 1]) / (x[i + j] - x[i]);
- double res = 0.0, cur = 1.0;
- for (int j = 0; j < y.size(); ++j)
- {
- res += table[0][j] * cur;
- cur *= (x0 - x[j]);
- }
- return res;
- }
- int main()
- {
- cout << fixed << setprecision(4);
- x = { 0, 1, 2, 3 };
- y = { 10, 11, 14, 18 };
- cout << left << setw(10) << "x";
- for (int i = 0; i < x.size() - 1; ++i)
- cout << setw(10) << x[i] + 0.5;
- cout << "\n" << left << setw(10) << "P(x)";
- for (int i = 0; i < x.size() - 1; ++i)
- cout << setw(10) << P(x[i] + 0.5);
- cout << "\n" << left << setw(10) << "L(x)";
- for (int i = 0; i < y.size() - 1; ++i)
- cout << setw(10) << L(x[i] + 0.5);
- cout << "\n" << left << setw(10) << "N(x)";
- for (int i = 0; i < y.size() - 1; ++i)
- cout << setw(10) << N(x[i] + 0.5);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement