#include #include #include #include #include using namespace std; class Interpolacja { public: void readFromFile(string filename) { string str; fstream file(filename); if (!file) { cerr << "Nie udalo sie otworzyc pliku o nazwie: " << filename << "\n"; exit(EXIT_FAILURE); } while (getline(file, str)) { istringstream iss(str); if (iss >> a >> b) { x.push_back(a); y.push_back(b); } } h = x[1] - x[0]; liczba_wezlow = x.size(); file.close(); } void oblicz() { tablica_roznic.assign(liczba_wezlow, vector(liczba_wezlow)); for (int i = 0; i < liczba_wezlow; i++) { tablica_roznic[i][0] = y[i]; } for (int j = 1; j < liczba_wezlow; j++) { for (int i = 0; i < liczba_wezlow - j; i++) { tablica_roznic[i][j] = (tablica_roznic[i + 1][j - 1] - tablica_roznic[i][j - 1]); } } suma = tablica_roznic[0][0]; for (int i = 1; i < liczba_wezlow; i++) { czynnik = tablica_roznic[0][i]; for (int j = 0; j < i; j++) { czynnik *= (x[j] - x[0]); } suma += czynnik; } } void wyswietl_tabela() { // nagłowki cout << setw(5) << "i" << setw(10) << "x" << setw(10) << "y"; for (int j = 1; j < liczba_wezlow; ++j) cout << setw(10) << "Δ^" + to_string(j); cout << endl; // wartości for (int i = 0; i < liczba_wezlow; i++) { cout << setw(5) << i << setw(10) << x[i]; for (int j = 0; j < liczba_wezlow - i; j++) { cout << setw(10) << tablica_roznic[i][j]; } cout << endl; } cout << "Interpolowany wynik: " << suma << endl; } private: float a, b, h, suma, czynnik; int liczba_wezlow; vector x, y; vector > tablica_roznic; };