Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- //ინტერვალი [0, 1]:
- double a(0) , b(1);
- //ფუნქცია [f(x) = x^5 + 6]:
- double f(double x)
- {
- return pow(x, 5) + 6;
- }
- //სამკუთხედის მეთოდი:
- double Rectangle(int n)
- {
- double h = (b-a)/n;
- double sum = 0;
- for (int i=1; i <= 2*n-1; i+=2)
- sum += f(a+i*h/2);
- return h*sum;
- }
- //ტრაპეციის მეთოდი:
- double Trapecy(int n)
- {
- double h = (b-a)/n;
- double sum = 0;
- for (int i=1; i <= n-1; i++)
- sum += f(a+i*h);
- return (h/2)*(f(a)+f(b)+2*sum);
- }
- //სიმპსონის მეთოდი:
- double Simpson(int n)
- {
- double h = (b-a)/n;
- double sum = 0;
- for (int i=1; i <= n-1; i += 2)
- sum += f(a+i*h);
- sum *= 2 ;
- for (int i=2 ; i <= n-2 ; i += 2)
- sum += f(a+i*h);
- return (h/3)*(f(a)+f(b)+2*sum);
- }
- int main()
- {
- //ცდომილება, s0 საწყისი და s საბოლოო მნიშვნელობები:
- double Epsilon = 0.000001, s(0), s0;
- //ბიჯების რაოდენობა – n და მაქსიმალური ბიჯების რაოდენობა – maxN:
- int n(1) , maxN(5000);
- /*
- ციკლი მუშაობს:
- სანამ ცდომილება Epsilon–ზე მეტია;
- სანამ ბიჯების რაოდენობა maxN–ზე ნაკლებია;
- */
- do
- {
- //ყოველ ჯერზე n იზრდება ორჯერ:
- n *= 2;
- //s საბოლოო მნიშვნელობა ენიჭება s0 საწყის მნიშვნელობას:
- s0 = s;
- //ვითვლით s–ს ტრაპეციის მეთოდით:
- s = Trapecy(n);
- }
- while (fabs(s-s0) > Epsilon && n < maxN );
- cout << "Integral approximation = " << s << endl;
- cout << "N = " << n << endl;
- system("PAUSE");
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment