vakho

რიცხვითის ლაბ. N8, 9, 10

Dec 16th, 2012
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. //ინტერვალი [0, 1]:
  7. double a(0) , b(1);
  8.  
  9. //ფუნქცია [f(x) = x^5 + 6]:
  10. double f(double x)
  11. {
  12.     return pow(x, 5) + 6;
  13. }
  14.  
  15. //სამკუთხედის მეთოდი:
  16. double Rectangle(int n)
  17. {
  18.     double h = (b-a)/n;
  19.     double sum = 0;
  20.     for (int i=1; i <= 2*n-1; i+=2)
  21.         sum += f(a+i*h/2);
  22.  
  23.     return h*sum;
  24. }
  25.  
  26. //ტრაპეციის მეთოდი:
  27. double Trapecy(int n)
  28. {
  29.     double h = (b-a)/n;
  30.     double sum = 0;
  31.     for (int i=1; i <= n-1; i++)
  32.         sum += f(a+i*h);
  33.  
  34.     return (h/2)*(f(a)+f(b)+2*sum);
  35. }
  36.  
  37. //სიმპსონის მეთოდი:
  38. double Simpson(int n)
  39. {
  40.     double h = (b-a)/n;
  41.     double sum = 0;
  42.     for (int i=1; i <= n-1; i += 2)
  43.         sum += f(a+i*h);
  44.  
  45.     sum *= 2 ;
  46.     for (int i=2 ; i <= n-2 ; i += 2)
  47.         sum += f(a+i*h);
  48.  
  49.     return (h/3)*(f(a)+f(b)+2*sum);
  50. }
  51.  
  52.  
  53. int main()
  54. {
  55.     //ცდომილება, s0 საწყისი და s საბოლოო მნიშვნელობები:
  56.     double Epsilon = 0.000001, s(0), s0;
  57.  
  58.     //ბიჯების რაოდენობა – n და მაქსიმალური ბიჯების რაოდენობა – maxN:
  59.     int n(1) , maxN(5000);
  60.  
  61.     /*
  62.     ციკლი მუშაობს:
  63.         სანამ ცდომილება Epsilon–ზე მეტია;
  64.         სანამ ბიჯების რაოდენობა maxN–ზე ნაკლებია;
  65.     */
  66.     do
  67.     {
  68.         //ყოველ ჯერზე n იზრდება ორჯერ:
  69.         n *= 2;
  70.         //s საბოლოო მნიშვნელობა ენიჭება s0 საწყის მნიშვნელობას:
  71.         s0 = s;
  72.         //ვითვლით s–ს ტრაპეციის მეთოდით:
  73.         s = Trapecy(n);
  74.     }
  75.     while (fabs(s-s0) > Epsilon &&  n < maxN );
  76.  
  77.     cout << "Integral approximation = " << s << endl;
  78.     cout << "N = " << n << endl;
  79.  
  80.     system("PAUSE");
  81.     return (0);
  82. }
Advertisement
Add Comment
Please, Sign In to add comment