Witam
dopiero zaczynam programować, proszę więc o wyrozumiałość;
na metody numeryczne mam napisać program obliczający całkę oznaczoną metodą Monte Carlo;
analizowałam wielokrotnie to co napisałam, niestety nie wiem gdzie popełniłam błąd (program zwraca błędny wynik):
byłabym wdzięczna za pomoc jego zlokalizowaniu
import java.util.*;
public class MonteCarlo {
public static void main(String[] args) {
double suma, dx, xi;
int i;
System.out.println("Obliczanie całki oznaczonej za pomocą metody Monte Carlo.\n");
Scanner sc=new Scanner(System.in);
System.out.println("Podaj wartosc xp /poczatek przedziału/");
double xp=sc.nextDouble();
System.out.println("Podaj wartosc xk /koniec przedziału/");
double xk=sc.nextDouble();
System.out.println("Podaj na ile punktów ma zostać dzielony przdział");
double n=sc.nextDouble();
suma = 0;
dx = xk - xp;
xi=xp + Math.random()*(xk - xp);
for(i = 1; i <= n; i++){
suma = suma+ f(xi);
suma= dx * suma /n;}
System.out.println("Pole pod funkcją = " + suma);
}
//---------------------------------------------------------------------
public static double f(double x)
{
double wynik=x*x+x;
//double wynik=(x*x*x)+(4*x*x)-10;
//double wynik= x*x-4+Math.sin(x);
return wynik;
}
}