Exemple #1
0
 public static double Integrate(this Function f, double a, double b, double delta)
 {
     if (Math.Sign(delta) != Math.Sign(b - a))
         delta *= -1;
     double sum = 0;
     int i = 0;
     for (double x = a; x < b; x += delta)
     {
         if (x + delta > b)
         {
             sum += (b - x) * f.Calc(x);
             break;
         }
         sum += delta * f.Calc(x);
         ++i;
     }
     return sum;
 }
Exemple #2
0
 public static double SimpsonIntegrate(this Function f, double a, double b, double delta)
 {
     if (Math.Sign(delta) != Math.Sign(b - a))
         delta *= -1;
     int n = (int) ((b - a) / delta);
     double h = (b - a) / n;
     double sum = 0;
     sum = f.Calc(a);
     for (int i = 1; i <= n; i += 2)
     {
         double x = a + h * i;
         sum += 4 * f.Calc(x);
     }
     for (int i = 2; i <= n - 1; i += 2)
     {
         double x = a + h * i;
         sum += 2 * f.Calc(x);
     }
     sum += f.Calc(b);
     /*int i = 0;
     for (double x = a; x < b; x += delta)
     {
         if (x + delta > b)
         {
             delta = b - a;
         }
         sum += delta * (f.Calc(x) + 4 * f.Calc((2 * x + delta) / 2) + f.Calc(x + delta));
         ++i;
     }
     sum /= 6;*/
     return h * sum / 3;
 }