Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // LAB_12_MO.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #define _USE_MATH_DEFINES
- #include <iostream>
- #include <Windows.h>
- #include <fstream>
- #include <math.h>
- using namespace std;
- const int Wezly = 11;
- const double x_poczatek = -1.0, x_koniec = 1.0;
- double const KrokWezlow = (x_koniec - x_poczatek) / (Wezly - 1);
- double xi_ro[Wezly];
- double ci_ro[Wezly];
- double xi_cz[Wezly];
- double ci_cz[Wezly];
- double f(double x)
- {
- return x / (1 + (20 * x*x*x*x));
- }
- void BazaNewtRown()
- {
- int i = 0, j, k = 1;
- int n = Wezly - 1;
- for (double z = x_poczatek; z <= x_koniec; z += KrokWezlow)
- {
- xi_ro[i] = z;
- ci_ro[i] = f(z);
- i++;
- }
- for (j = n; j>0; j--)
- {
- for (i = n; i >= k; i--)
- {
- ci_ro[i] = (ci_ro[i] - ci_ro[i - 1]) / (xi_ro[i] - xi_ro[i - k]);
- }
- k++;
- }
- }
- double BazaNewtRownWar(double x)
- {
- double wynik;
- int n = Wezly - 1, i;
- wynik = ci_ro[n];
- for (i = n - 1; i >= 0; i--)
- {
- wynik *= (x - xi_ro[i]);
- wynik += ci_ro[i];
- }
- return wynik;
- }
- void BazaNewtCzyb()
- {
- int i, j, k = 1;
- int n = Wezly - 1;
- for (i = 0; i<Wezly; i++)
- {
- xi_cz[i] = cos(((2.0 * i + 1.0) * M_PI) / (2.0 * Wezly));
- ci_cz[i] = f(xi_cz[i]);
- }
- for (j = n; j>0; j--)
- {
- for (i = n; i >= k; i--)
- {
- ci_cz[i] = (ci_cz[i] - ci_cz[i - 1]) / (xi_cz[i] - xi_cz[i - k]);
- }
- k++;
- }
- }
- double BazaNewtCzybWar(double x)
- {
- double wynik;
- int n = Wezly - 1, i;
- wynik = ci_cz[n];
- for (i = n - 1; i >= 0; i--)
- {
- wynik *= (x - xi_cz[i]);
- wynik += ci_cz[i];
- }
- return wynik;
- }
- int main()
- {
- fstream dane, blad;
- const int N = 200;
- double x = x_poczatek;
- double krok = (x_koniec - x_poczatek) / N;
- BazaNewtRown();
- BazaNewtCzyb();
- dane.open("wyniki.txt", fstream::out);
- blad.open("blad.txt", fstream::out);
- for (x = x_poczatek; x < x_koniec; x += krok)
- {
- dane << x << " " << f(x) << " " << BazaNewtCzybWar(x) << " " << BazaNewtRownWar(x) << endl;
- }
- dane.close();
- system("Pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement