pre la distribuzione normale ho risolto con:
class Integrale
{
public delegate double Function(double x);
//declare a delegate that takes and returns double
public static double integral(Function f, double a, double b, int step_number)
{
double sum = 0;
double step_size = (b - a) / step_number;
for (int i = 0; i < step_number; i = i + 2)
{ //Simpson algorithm samples the integrand in several point which significantly improves //precision.
sum = sum + (f(a + i * step_size) + 4 * f(a + (i + 1) * step_size) + f(a + (i + 2) * step_size)) * step_size / 3;
//divide the area under f(x) //into step_number rectangles and sum their areas
}
return sum;
}
}
//....................
public static double funzione(double x)
{
double d = 4;
double m = 15;
return Math.Exp(-1*Math.Pow(x-m,2)/(2*d*d))/Math.Sqrt(2*Math.PI*d*d);
}
e sull'evento:
Console.WriteLine(Integrale.integral(new Integrale.Function(funzione), 0, 10, 200));
Mentre per l'inversa normale non riesco nemmeno a trovare la formulazione!
|