Facebook
From RafaƂ Senior DeveloperRC8, 6 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 269
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. double* przejscie(double*, double, double, int);
  5. double licz(double*, double*, double, double, int);
  6. double f(double);
  7.  
  8. void Calka_Dwuwezlowa();
  9. void Calka_Czterowezlowa();
  10.  
  11. int main()
  12. {
  13.         Calka_Dwuwezlowa();
  14.         Calka_Czterowezlowa();
  15.  
  16.         cout << "\n\n";
  17.         system("pause");
  18.         return 0;
  19. }
  20.  
  21. void Calka_Dwuwezlowa()
  22. {
  23.         double a, b;
  24.         cout << "Podaj przedzial a: "; cin >> a;
  25.         cout << "Podaj przedzial b: "; cin >> b;
  26.  
  27.         int n1 = 2;
  28.  
  29.         double* tabDwuWezlowe = new double[n1];
  30.         tabDwuWezlowe[0] = 0.577350;
  31.         tabDwuWezlowe[1] = -0.577350;
  32.  
  33.         double* tabAk2 = new double[n1];
  34.         tabAk2[0] = 1;
  35.         tabAk2[1] = 1;
  36.  
  37.         double* tabT;
  38.         tabT = przejscie(tabDwuWezlowe, a, b, n1);
  39.         cout << "\nCalka dwuwezlowa: " << licz(tabT, tabAk2, a, b, n1);
  40. }
  41.  
  42. void Calka_Czterowezlowa()
  43. {
  44.         double a, b;
  45.         cout << "Podaj przedzial a: "; cin >> a;
  46.         cout << "Podaj przedzial b: "; cin >> b;
  47.  
  48.         int n2 = 4;
  49.  
  50.         double* tabCzteroWezlowe = new double[n2];
  51.         tabCzteroWezlowe[0] = -0.861136;
  52.         tabCzteroWezlowe[1] = -0.339981;
  53.         tabCzteroWezlowe[2] = 0.339981;
  54.         tabCzteroWezlowe[3] = 0.861136;
  55.  
  56.         double* tabAk4 = new double[n2];
  57.         tabAk4[0] = 0.347855;
  58.         tabAk4[1] = 0.652145;
  59.         tabAk4[2] = 0.652145;
  60.         tabAk4[3] = 0.347855;
  61.  
  62.         double* tabT;
  63.         tabT = przejscie(tabCzteroWezlowe, a, b, n2);
  64.         cout << "\nCalka czterowezlowa: " << licz(tabT, tabAk4, a, b, n2);
  65. }
  66.  
  67. double* przejscie(double* tab, double a, double b, int n)
  68. {
  69.         double tmp;
  70.         for (int i = 0; i<n; i++)
  71.         {
  72.                 tmp = (a + b) / 2 + (b - a) / 2 * tab[i];
  73.                 tab[i] = tmp;
  74.         }
  75.  
  76.         return tab;
  77. }
  78.  
  79. double licz(double* tab, double* Ak, double a, double b, int n)
  80. {
  81.         double calka = 0;
  82.         for (int i = 0; i<n; i++)
  83.                 calka += Ak[i] * f(tab[i]);
  84.        
  85.         calka *= (b - a) / 2;
  86.        
  87.         return calka;
  88. }
  89.  
  90. double f(double x)
  91. {
  92.         return 1 / x;
  93. }
  94.