Witam, mam wielki problem.. otóż nie wiem czy podany poniżej program działać bedzie poprawnie.. A dokładnie czy nie ma w nim błędów z dziedziny metod numerycznych. Mam do scałkowania dość skomplikowaną funkcję i nie wiem czy ten program poda mi prawidłowe rozwiązania.
Dziękuje ze pomoc i ewentualne sugestie!
#include <iomanip>
#include <iostream>
#include <math.h>
using namespace std;
double f(double x)
{
return(sqrt(x) * 2 * pow((0,0002) - (0,342 - x)*(0,342 - x), 1/2));
}
int main()
{
const int N = 100000; //liczba punktów/trapezów podziałowych
double xp,xk,s,dx;
int i;
cout.precision(5); // 5 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;
}
</i>