Witam,
Potrzebuje informacji dlaczego poniższy kod daje złe wyniki całki.
Sprawdzałem wyniki w matlabie i są całkowicie inne niż tym programie.
#include <stdio.h>
#include <omp.h>
#include <iostream>
using namespace std;
//Funkcja opisuj¹c¹ ca³kê
double f(double x,double a, double b,double c)
{
return((a*x*x)+(b*x)+c);
}
double tp()
{
double omp_get_wtime(void);
}
int main()
{
//1.1 Wczytywanie wspolczynników A,B,C oraz granic ca³kowania
double A,B,C,X1,X2,dx,Ts,tp;
const int N=1000;
cout << "Podaj wspolczynnik A :";
cin >> A;
cout << "Podaj wspolczynnik B :";
cin >> B;
cout << "Podaj wspolczynnik C :";
cin >> C;
cout << "Podaj granica ca³kowania X1 :";
cin >> X1;
cout << "Podaj granica ca³kowania X2 :";
cin >> X2;
#pragma omp parallel private(dx,X1,X2) shared (A,B,C,Ts)
{Ts=0;
dx=(X2-X1)/N;
#pragma omp for reduction (+:Ts)
for(int i = 1; i < N; i++)
{
Ts += f(X1 + i * dx,A,B,C)*dx;
}
}
//1.2 Dane wyjsciowe
cout <<"Wartosc calki wynosi:"<<Ts<<endl;
cout <<"Wartosc Tp:" << tp<<endl;
return 0;
}