METODA PROSTOKATOW
#include <iomanip>
#include <iostream>
using namespace std;
//*******************************
//** Tutaj definiujemy funkcję **
//*******************************
double f(double x)
{
return(x * x + 2 * x);
}
//********************
//** Program główny **
//********************
int main()
{
const int N = 1000; //liczba punktów/prostokątów podziałowych
double xp,xk,s,dx;
int i;
cout.precision(3); // 3 cyfry po przecinku
cout.setf(ios::fixed); // format stałoprzecinkowy
cout << "Obliczanie calki oznaczonej\n"
"za pomoca metody prostokatow\n"
"----------------------------\n"
"Podaj poczatek przedzialu calkowania\n\n"
"xp = ";
cin >> xp;
cout << "\nPodaj koniec przedzialu calkowania\n\n"
"xk = ";
cin >> xk;
cout << endl;
s = 0;
dx = (xk - xp) / N;
for(i = 1; i <= N; i++) s += f(xp + i * dx);
s *= dx;
cout << "Wartosc calki wynosi : " << setw(8) << s
<< "\n\n";
system("PAUSE"); return 0;
}
METODA TRAPEZOW
#include <iomanip>
#include <iostream>
using namespace std;
//*******************************
//** Tutaj definiujemy funkcję **
//*******************************
double f(double x)
{
return(x * x + 2 * x);
}
//********************
//** Program główny **
//********************
int main()
{
const int N = 1000; //liczba punktów/trapezów podziałowych
double xp,xk,s,dx;
int i;
cout.precision(3); // 3 cyfry po przecinku
cout.setf(ios::fixed); // format stałoprzecinkowy
cout << "Obliczanie calki oznaczonej\n"
" za pomoca metody trapezow\n"
"----------------------------\n"
"Podaj poczatek przedzialu calkowania\n\n"
"xp = ";
cin >> xp;
cout << "\nPodaj koniec przedzialu calkowania\n\n"
"xk = ";
cin >> xk;
cout << endl;
s = 0;
dx = (xk - xp) / N;
for(i = 1; i < N; i++) s += f(xp + i * dx);
s = (s + (f(xp) + f(xk)) / 2) * dx;
cout << "Wartosc calki wynosi : " << setw(8) << s
<< "\n\n";
system("PAUSE"); return 0;
}
METODA SIMPSONA
#include <iomanip>
#include <iostream>
using namespace std;
//*******************************
//** Tutaj definiujemy funkcję **
//*******************************
double f(double x)
{
return(x * x + 2 * x);
}
//********************
//** Program główny **
//********************
int main()
{
const int N = 10; //liczba punktów podziałowych
double xp,xk,s,st,dx,x;
int i;
cout.precision(3); // 3 cyfry po przecinku
cout.setf(ios::fixed); // format stałoprzecinkowy
cout << "Obliczanie calki oznaczonej\n"
" za pomoca metody Simpsona\n"
"---------------------------\n"
"Podaj poczatek przedzialu calkowania\n\n"
"xp = ";
cin >> xp;
cout << "\nPodaj koniec przedzialu calkowania\n\n"
"xk = ";
cin >> xk;
cout << endl;
s = 0; st = 0;
dx = (xk - xp) / N;
for(i = 1; i <= N; i++)
{
x = xp + i * dx;
st += f(x - dx / 2);
if(i < N) s += f(x);
};
s = dx / 6 * (f(xp) + f(xk) + 2 * s + 4 * st);
cout << "Wartosc calki wynosi : " << setw(8) << s
<< "\n\n";
system("PAUSE"); return 0;
}
programy dzialaja pod kompilatorem Dev-C++ 4.9.9.2