Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- void main()
- {
- double x0,h,suma=0,bladmax=0.0,bladmax2=0.0,x0p1,x0p2,temp1,temp2;
- int i,nmax;
- cout << "podaj Nmax = ";
- cin >> nmax;
- cout << "podaj krok = ";
- cin >> h;
- cout << "punkty kolejno od 1 do 10 (bez zera ponieważ pochodna nie istnieje w tym punkcie) " << endl;
- cout << endl << endl << "funkcja dla logarytmu naturalnego\n";
- double *tab = new double[nmax + 1];
- double *tab1 = new double[nmax];
- double *tab2 = new double[nmax];
- double *tab3 = new double[nmax];
- //logarytm naturalny
- for(x0=1;x0<11;x0++)
- {
- for (i = 0; i <= nmax; i++)
- {
- tab[i] = log(x0 + i*h);
- }
- suma = 0;
- for (i = 0; i <= nmax; i++)
- {
- for (int j = 0; j < nmax - i; j++)
- {
- tab[j] = tab[j + 1] - tab[j];
- }
- tab1[i] = tab[0];
- }
- //1 pochodna
- for (i = 0; i < nmax; i++)
- {
- tab2[i] = pow(-1.0, i)*(1.0 / (i + 1.0));
- suma += (1 / h)*tab2[i] * tab1[i];
- }
- /*
- cout.precision(10);
- cout << "x0 = " << x0 << endl;
- cout << "1 pochodna : " << suma << endl;
- cout << "blad 1 pochodnej : " << abs(suma - (1 / x0)) << endl;
- */
- if (abs(suma - (1 / x0)) > bladmax)
- {
- bladmax = abs(suma - (1 / x0));
- x0p1 = x0;
- temp1 = suma;
- }
- //2 pochodna
- for (i = 0; i < nmax; i++)
- {
- tab3[i] = 0;
- }
- for (i = 1; i < nmax; i++)
- {
- for (int j = 0; j < nmax - i; j++)
- {
- tab3[i + j] = tab2[i - 1] * tab2[j] + tab3[i + j];
- }
- }
- suma = 0;
- for (i = 0; i < nmax; i++)
- {
- suma += (1 / pow(h, 2))*tab3[i] * tab1[i];
- }
- /*cout.precision(10);
- cout << "druga pochodna : " << suma << endl;
- cout << "blad 2 pochodnej : " << abs(suma + (1 / (x0*x0))) << endl << endl;*/
- if (abs(suma + (1 / (x0*x0))) > bladmax2)
- {
- bladmax2 = abs(suma + (1 / (x0*x0)));
- x0p2 = x0;
- temp2 = suma;
- }
- }
- cout.precision(10);
- cout << "1 pochodna : " << temp1 << endl;
- cout << "max blad 1 pochodnej : " << bladmax << endl;
- cout << "x0 1 pochodnej : " << x0p1 << endl;
- cout << "2 pochodna : " << temp2 << endl;
- cout << "max blad 2 pochodnej : " << bladmax2 << endl;
- cout << "x0 2 pochodnej : " << x0p2 << endl << endl;
- //funkcja dla sinusa
- bladmax = 0.0;
- bladmax2 = 0.0;
- for (x0 = 0; x0<11; x0++)
- {
- for (i = 0; i <= nmax; i++)
- {
- tab[i] = sin(x0 + i*h);
- }
- suma = 0;
- for (i = 0; i <= nmax; i++)
- {
- for (int j = 0; j < nmax - i; j++)
- {
- tab[j] = tab[j + 1] - tab[j];
- }
- tab1[i] = tab[0];
- }
- //1 pochodna
- for (i = 0; i < nmax; i++)
- {
- tab2[i] = pow(-1.0, i)*(1.0 / (i + 1.0));
- suma += (1 / h)*tab2[i] * tab1[i];
- }
- cout << suma << endl;
- /*
- cout.precision(10);
- cout << "x0 = " << x0 << endl;
- cout << "cos(x0) = " << cos(x0) << endl;
- cout << "1 pochodna : " << suma << endl;
- cout << "blad 1 pochodnej : " << abs(suma - cos(x0)) << endl;
- */
- if (abs(suma - cos(x0)) > bladmax)
- {
- bladmax = abs(suma - cos(x0));
- x0p1 = x0;
- temp1 = suma;
- }
- //2 pochodna
- for (i = 0; i < nmax; i++)
- {
- tab3[i] = 0;
- }
- for (i = 1; i < nmax; i++)
- {
- for (int j = 0; j < nmax - i; j++)
- {
- tab3[i + j] = tab2[i - 1] * tab2[j] + tab3[i + j];
- }
- }
- suma = 0;
- for (i = 0; i < nmax; i++)
- {
- suma += (1 / pow(h, 2))*tab3[i] * tab1[i];
- }
- /*cout.precision(10);
- cout << "-sin(x0) = " << -sin(x0) << endl;
- cout << "druga pochodna : " << suma << endl;
- cout << "blad 2 pochodnej : " << abs(suma + sin(x0)) << endl << endl;*/
- if (abs(suma + sin(x0))>bladmax2)
- {
- temp2 = suma;
- bladmax2 = abs(suma + sin(x0));
- x0p2 = x0;
- }
- }
- cout.precision(10);
- cout << endl << endl << "funkcja dla sinusa\n";
- cout << "1 pochodna : " << temp1 << endl;
- cout << "max blad 1 pochodnej : " << bladmax << endl;
- cout << "x0 1 pochodnej : " << x0p1 << endl;
- cout << "2 pochodna : " << temp2 << endl;
- cout << "max blad 2 pochodnej : " << bladmax2 << endl;
- cout << "x0 2 pochodnej : " << x0p2 << endl;
- //funkcja dla wielomianu 7 rzędu W(x)=7x^7+2x^6-9x^5-8x^4-x^3+2x^2+5x+6
- bladmax = 0.0;
- bladmax2 = 0.0;
- int p1, p2;
- for (x0 = 0; x0<11; x0++)
- {
- for (i = 0; i <= nmax; i++)
- {
- tab[i] = 7*pow(x0+i*h,7) + 2*pow(x0+i*h,6) - 9*pow(x0 + i*h,5) - 8 * pow(x0 + i*h, 4) - pow(x0 + i*h,3) + 2 * pow(x0 + i*h,2) + 5 * (x0 + i*h) + 6;
- }
- suma = 0;
- for (i = 0; i <= nmax; i++)
- {
- for (int j = 0; j < nmax - i; j++)
- {
- tab[j] = tab[j + 1] - tab[j];
- }
- tab1[i] = tab[0];
- }
- //1 pochodna
- for (i = 0; i < nmax; i++)
- {
- tab2[i] = pow(-1.0, i)*(1.0 / (i + 1.0));
- suma += (1 / h)*tab2[i] * tab1[i];
- }
- p1 = 49 * pow(x0, 6) + 12 * pow(x0, 5) - 45 * pow(x0, 4) - 32 * pow(x0, 3) - 3 * pow(x0, 2) + 4 * (x0)+5;
- /*
- cout.precision(10);
- cout << "x0 = " << x0 << endl;
- cout << "W'(x0) = " << p1 << endl;
- cout << "1 pochodna : " << suma << endl;
- cout << "blad 1 pochodnej : " << abs(suma - p1) << endl;
- */
- if (abs(suma - p1) > bladmax)
- {
- bladmax = abs(suma - p1);
- x0p1 = x0;
- temp1 = suma;
- }
- //cout << suma << endl;
- //2 pochodna
- for (i = 0; i < nmax; i++)
- {
- tab3[i] = 0;
- }
- for (i = 1; i < nmax; i++)
- {
- for (int j = 0; j < nmax - i; j++)
- {
- tab3[i + j] = tab2[i - 1] * tab2[j] + tab3[i + j];
- }
- }
- suma = 0;
- for (i = 0; i < nmax; i++)
- {
- suma += (1 / pow(h, 2))*tab3[i] * tab1[i];
- }
- p2 = 294 * pow(x0, 5) + 60 * pow(x0, 4) - 180 * pow(x0, 3) - 96 * pow(x0, 2) - 6 *x0 + 4;
- //cout << suma << endl;
- /*cout.precision(10);
- cout << "W''(x0) = " << p2 << endl;
- cout << "druga pochodna : " << suma << endl;
- cout << "blad 2 pochodnej : " << abs(suma - p2) << endl << endl;
- */
- if (abs(suma -p2)>bladmax2)
- {
- bladmax2 = abs(suma-p2);
- x0p2 = x0;
- temp2 = suma;
- }
- }
- cout.precision(10);
- cout << endl << endl << "funkcja dla W(x)=7x^7+2x^6-9x^5-8x^4-x^3+2x^2+5x+6\n";
- cout << "1 pochodna : " << temp1 << endl;
- cout << "max blad 1 pochodnej : " << bladmax << endl;
- cout << "x0 1 pochodnej : " << x0p1 << endl;
- cout << "2 pochodna : " << temp2 << endl;
- cout << "max blad 2 pochodnej : " << bladmax2 << endl;
- cout << "x0 2 pochodnej : " << x0p2 << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement