Ocena użytkownikóww: ***** / 1
Nadesłany przez Tomasz Lubiński, 10 maja 2008 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
metoda_monte_carlo.c:
// Calkowanie numeryczne - metoda Monte-Carlo
// www.algorytm.org
// (c)2008 by Tomasz Lubinski
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
//function
float func(float x) {
return x*x+3;
}
//random number from a to b
double randomPoint(double a, double b) {
return a + (double)rand()/(double)(RAND_MAX+1) * (b-a);
}
//get data, algorithm
int main(){
float xp, xk, calka;
int i, n;
printf("Podaj poczatek przedzialu calkowania\n");
scanf("%f", &xp);
printf("Podaj koniec przedzialu calkowania\n");
scanf("%f", &xk);
printf("Podaj dokladnosc calkowania (w setkach punktow)\n");
scanf("%d", &n);
n *= 100;
calka = 0;
srand((unsigned)time( NULL ));
for (i=0; i<n; i++) {
calka += func(randomPoint(xp, xk));
}
calka = (calka / (double)n) * (xk - xp);
printf("Wartosc calki wynosi w przyblizeniu %f\n", calka);
return 0;
}