Esempio n. 1
0
        //первая производная функции
        public double Fdif(FunctionX F, double x)
        {
            double h, fl, fr, fc;

            h = 0.1;                              // шаг, с которым вычисляем производную
            // приближенно вычисляем первую производную различными способами
            fl = (F(x) - F(x - h)) / h;           // левая
            fr = (F(x + h) - F(x)) / h;           // правая
            fc = (F(x + h) - F(x - h)) / (2 * h); // центральная
            return(fr);
        }
Esempio n. 2
0
        public double N_tangent(FunctionX F, double x, double E)        // "Метод Ньютона"
        {
            double x1;

            x1 = x - F(x) / Fdif(F1, x);
            while (Math.Abs(F(x) / Fdif(F, x)) > E)
            {
                x  = x1;
                x1 = x - F(x) / Fdif(F, x);
            }
            return(x);
        }
Esempio n. 3
0
        public double Half_interval(FunctionX F, double a, double b, double E)
        {
            Half = GetHalf;
            double c = Half(a, b);

            if (F(a) * F(b) > 0)
            {
                throw new Exception("Возможно, на этом отрезке нет корней");
            }
            while (Math.Abs(b - a) > E)
            {
                c = Half(a, b);
                if (F(c) == 0)
                {
                    return(c);                          //Корень уравнения
                }
                else
                {
                    if (F(c) * F(a) < 0)
                    {
                        b = c;
                    }
                    else
                    {
                        a = c;
                    }
                }
            }
            if (Math.Abs(F(a)) <= E) //выбор приближенного значения
            {
                return(a);
            }
            else
            {
                return(b);
            }
        }