Пример #1
0
        public void Start(int primer_number, double _a, double _b, double _accuracy)
        {
            this.a      = _a;
            this.b      = _b;
            this.primer = primer_number;
            return_x rx = null;

            switch (primer)
            {
            case 1:
            { rx = x => 7 / (x * x + 1); } break;

            case 2:
            { rx = x => 2 * x * x; } break;

            case 3:
            { rx = x => Math.Sin(x) * Math.Cos(x); } break;

            case 4:
            { rx = x => 5 * x * x / 3; } break;

            case 5:
            { rx = x => Math.Pow(Math.E, x); } break;
            }
            this.accuracy = _accuracy;
            this.Solve(rx);
        }
Пример #2
0
 private void Solve(return_x rx)
 {
     while (true)
     {
         h = (b - a) / n;
         for (int i = 0; i < n; i++)
         {
             if (i == 0)
             {
                 answer1 = rx(a + i * h);
             }
             else if (i < n - 1)
             {
                 answer1 += 2 * rx(a + i * h);
             }
             else
             {
                 answer1 += (rx(a + i * h));
             }
         }
         answer1 = h / 2 * answer1;
         n       = n * 2;
         h       = (b - a) / n;
         for (int i = 0; i < n; i++)
         {
             if (i == 0)
             {
                 answer2 = rx(a + i * h);
             }
             else if (i < n - 1)
             {
                 answer2 += 2 * rx(a + i * h);
             }
             else
             {
                 answer2 += (rx(a + i * h));
             }
         }
         answer2 = h / 2 * answer2;
         if (Math.Abs(answer2 - answer1) < accuracy)
         {
             this.n = n;
             break;
         }
         else
         {
             n = n * 2;
         }
     }
 }