Advertisement
Czapek

całki numeryczne

Nov 22nd, 2019
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <iostream>
  2. #include<math.h>
  3.  
  4. using namespace std;
  5.  
  6. float trapezy(float *fi, float h, int n)
  7. {
  8.     float wynik=0;
  9.     for(int i = 0; i <= n; i++)
  10.     {
  11.         if(i == 0 or i == n) wynik += 0.5 * fi[i];
  12.         else wynik += fi[i];
  13.     }
  14.     return h*wynik;
  15. }
  16. float simpson(float *fi, float h, int n)
  17. {
  18.  
  19.  
  20.         float wynik=0;
  21.         for(int i = 0; i <= n; i++)
  22.         {
  23.             if(i == 0 or i == n) wynik += fi[i];
  24.             else if(i%2 == 0) wynik += 2*fi[i];
  25.             else wynik += 4*fi[i];
  26.         }
  27.         return (h/3)*wynik;
  28. }
  29. float funkcyjka(float x)
  30. {
  31.     //return cos(x)*cos(x)+1;
  32.     return 1/(1+pow(x,2));
  33. }
  34. void wartosci(float *fi, float a, float b, float h, int n)
  35. {
  36.     float krok =0;
  37.     for(int i=0; i <=n; i++)
  38.     {
  39.         fi[i] = funkcyjka(a+krok);
  40.         cout << krok << "   " << fi[i] << endl;
  41.         krok +=h;
  42.     }
  43. }
  44. int main()
  45. {
  46.     int n;
  47.     float h;
  48.     //float a = 0;
  49.     //float b = 2*3.14;
  50.     float a = -1;
  51.     float b = 1;
  52.     cout << "Podaj n" << endl;
  53.     cin >> n;
  54.     h = (b-a)/n;
  55.     float *fi = new float[n+1];
  56.     wartosci(fi, a, b, h, n);
  57.     cout << "Wedlug metody trapezow pi = " << 2 * trapezy(fi, h, n) << endl;
  58.     if( n%2 == 0 )
  59.     cout << "Wedlug Simpsona pi = " << 2 * simpson(fi, h, n) << endl;
  60.     else cout << "n nie jest parzyste, Simpson nie zadziala" << endl;
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement