#include #include #include using namespace std; double liniowa (double x) { return exp(-x)*(21*x-37); } double horner (double x, double tab[], int rozmiar) { int i; double wynik; wynik=tab[0]; for (i=1; i<=rozmiar-1; i++) wynik=wynik*x+tab[i]; return exp(-x)*wynik; } double tryg (double x) { return exp(-x)*cos(x)*4; } double zlozenie (double x) { return exp(-x)*fabs(x*x*sin(x)); } double wartosci(double x, double tab[], int wybor, int wyborwaga, double waga) { double wynik; if(wybor==1) wynik=liniowa(x); else if (wybor==2) wynik=horner(x, tab, 4); else if (wybor==3) wynik=tryg(x); else wynik=zlozenie(x); if(wyborwaga==1) return wynik/exp(-x)*waga; else return wynik; } double wartosci1(double x, double tab[], int wybor) { if(wybor==1) return liniowa(x)/exp(-x); else if (wybor==2) return horner(x, tab, 4)/exp(-x); else if (wybor==3) return tryg(x)/exp(-x); else return zlozenie(x)/exp(-x); } double simpson (double a, double b, int wybor, int wybor2, double tab[], double &wynik, double &wynik1, int &n) { double dx, suma2, suma, x; int i; n++; wynik+=wynik1; dx=(b-a)/(n); suma2=0; suma=0; for (i=1; i>wyborwaga; if(wyborwaga==1) { cout<<"podaj wage"<>waga; } cout<<"Wybierz funkcje:"<>wybor; if(wybor>=1 && wybor<=4) { cout << "1. Okreslony przedzial calkowania. \n2. Przedzial calkowania [0, inf]." << endl; cin >> wybor2; if (wybor2==1) { cout << "Okresl przedzial: " << endl; cout << "Poczatek przedzialu: "; cin >> a; cout << "Koniec przedzialu: "; cin >> b; cout << "Podaj dokladnosc: "; cin >> eps; cout << endl; a=0; wynik1=0; do { simpson(a,b,wybor,wybor2,tab,wynik,wynik1,n); ile++; } while (wynik1>eps); } else if (wybor2==2) { ile=0; cout << "Podaj dokladnosc: "; cin >> eps; cout << endl; a=0; wynik1=0; do { simpson(a,a+1,wybor,wybor2,tab,wynik,wynik1,n); a+=1; ile++; } while (fabs(wynik-wynik1)>eps); } cout<<"Wynik metoda Newtona-Cotesa: "<eps and m<=4); cout<<"Wynik metoda Laguerre'a: "<