Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<math.h>
- #include<conio.h>
- #include<iomanip>
- using namespace std;
- double wartosc(double B)
- {
- return pow(B, 5);
- }
- double lagrange(int n, double a, double b,double B)
- {
- double p;
- double tab[100];
- double suma=0.0;
- double iloczyn;
- double licznik;
- double mianownik;
- int i,j;
- p = (b-a)/(double)n;
- for(i=0; i<=n; i++)
- {
- tab[i] = a + p*(double)i;
- }
- for(j=0;j<=n;j++)
- {
- iloczyn = 1.0;
- licznik = 0.0;
- mianownik = 0.0;
- for(i=0;i<=n;i++)
- {
- if(i!=j)
- {
- licznik = B-tab[i];
- mianownik = tab[j] - tab[i];
- iloczyn = iloczyn*(licznik/mianownik);
- }
- }
- suma = suma + (wartosc(a + p*(double)j)*iloczyn);
- }
- return suma;
- }
- double czybyszew(int n,double a,double b,double B)
- {
- double mianownik = 1, licznik = 1;
- double wi = 0.0, w = 0.0;
- double p = (b-a)/n, zi, zj, ci, cj;
- double const pi = 3.141592653589793;
- for (int i = 0; i < n+1; i++)
- {
- for (int j = 0; j < n+1; j++)
- {
- zj = cos(pi*(2*j + 1)/(2*n + 2));
- zi = cos(pi*(2*i + 1)/(2*n + 2));
- cj = 0.5*((b - a)*zj + a + b);
- ci = 0.5*((b - a)*zi + a + b);
- if(i != j)
- {
- mianownik = mianownik*(ci - cj);
- licznik = licznik*(B - cj);
- }
- else
- {
- mianownik = mianownik*1;
- licznik = licznik*1;
- }
- }
- licznik = (licznik)*wartosc(ci);
- wi = licznik/mianownik;
- w += wi;
- mianownik = licznik = 1;
- }
- return w;
- }
- int main()
- {
- double a,b;
- int n;
- cout<< "Wprowadz a, b, n:" <<endl;
- cin>>a;
- cin>>b;
- cin>>n;
- double B, xmax, wart, xmax2, wart2;
- double blad_zad1, blad_zad2;
- double max_blad_zad1 = 0.0, max_blad_zad2 = 0.0;
- for(B=a; B<=b; B = B + 0.1)
- {
- blad_zad1 = fabs(lagrange(n,a,b,B)-wartosc(B));
- if(blad_zad1 > max_blad_zad1) max_blad_zad1 = blad_zad1; xmax = B; wart = lagrange(n,a,b,B);
- blad_zad2 = fabs(czybyszew(n,a,b,B)-wartosc(B));
- if(blad_zad2 > max_blad_zad2) max_blad_zad2 = blad_zad2; xmax2 = B; wart2 = czybyszew(n,a,b,B);
- }
- cout << endl << "Maksymalny blad w metodzie ze stalym interwalem miedzy wezlami:" <<endl << "DELTA = " << max_blad_zad1 <<endl << "Wartosc argumentu z maksymalnym bledem:" << xmax << endl << "Wartosc funkcji w punkcie z maksymalnym bledem" << wart << endl;
- cout << endl << "Maksymalny blad w metodzie wezlow Czebyszewa:" <<endl << "DELTA = " << max_blad_zad2 <<endl<< "Wartosc argumentu z maksymalnym bledem:" << xmax2 << endl << "Wartosc funkcji w punkcie z maksymalnym bledem" << wart2 << endl<<endl;
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement