Esempio n. 1
0
        /// <summary>
        /// математическая функция для просчета поляризационной характеристики
        /// </summary>
        /// <param name="fi">аргумент (для этой программы это тетта Q)</param>
        /// <param name="typeFunction">передаем тип функции зависит от кси и может быть 1, 2 или 3</param>
        /// <returns></returns>
        public float PolarCharacteristic(float fi, Enums.TypeFunction typeFunction, float dx)
        {
            float f_4     = General_F_4_WithOutAbs(consts.Q, typeFunction, dx);
            float f_4_abs = Math.Abs(f_4);
            float f_Q_abs = Math.Abs(f_4 * CosInRadians(consts.Q));
            float a       = 1;

            if (f_Q_abs == 0)
            {
                f_Q_abs = 0.0001F;
            }
            float m = f_4_abs / f_Q_abs;

            if (m > 1000)
            {
                m = 1000;
            }

            float b        = m * a;
            float e        = b * b > 1 ? (float)Math.Sqrt(1 - a * a / (b * b)) : (float)Math.Sqrt(0.1);
            var   radicand = 1 - e * e * CosInRadians(fi) * CosInRadians(fi);
            float r        = radicand < 0 //для защиты от отрицательного подкоренного выражения
                ? b / (float)Math.Sqrt(radicand)
                : b;

            return(r);
        }
Esempio n. 2
0
        /// <summary>
        /// расчет кси в зависимости от вида фукции
        /// </summary>
        /// <param name="x">аргумент функции</param>
        /// <param name="TypeE_a">передается 1(если кси меньше оптимального), 2(кси оптимальный) или 3(если кси критический) </param>
        /// <returns></returns>
        private float E_a(float x, Enums.TypeFunction TypeE_a)
        {
            switch (TypeE_a)
            {
            case Enums.TypeFunction.E_LessOpt:
                return(SinInRadians(x));

            case Enums.TypeFunction.E_Opt:
                return(1F + 1F / (2F * consts.N) + SinInRadians(x));

            case Enums.TypeFunction.E_Crit:
                return(1f / consts.N + SinInRadians(x));

            default:
                throw new ArgumentException();
            }
        }
Esempio n. 3
0
 /// <summary>
 /// в зависимости от типа спиральных антенн и вида кси (Е_а) выбираются фунции для просчета F от фи, тип спиральных антенн задается в GraficForm имеет значения 1 или 2
 /// </summary>
 /// <param name="x">аргумент функции - (тут)Q</param>
 /// <param name="typeFunction">тип функции в зависимости от вида кси (Е_а) принимает значение 1, 2 или 3</param>
 /// <returns></returns>
 public float General_F_4_WithOutAbs(float x, Enums.TypeFunction typeFunction, float dx)
 => functionByTypeSpiralAntennasAndTypeFunction[consts.TypeSpiralAntennas][typeFunction](E_a(consts.A, typeFunction), x, dx);
Esempio n. 4
0
 public float General_F_Q(float x, Enums.TypeFunction typeFunction, float dx)
 => Math.Abs(General_F_4_WithOutAbs(x, typeFunction, dx) * CosInRadians(x));
Esempio n. 5
0
 /// <summary>
 /// Основная функция, которая выбирает, другие функции для просчета значения функции F в точке с аргументом X
 /// </summary>
 /// <param name="q">передавать значение Х</param>
 /// <param name="typeFunction">передавать 1, 2 или 3 рисуется 3 разных графика в зависимости от кси E</param>
 /// <param name="nameFunc">передвать "F_4" функция от фи , "F_Q"функция от тетта или "r" поляризационная характеристика</param>
 /// <returns>возвращает значение функции в точке X</returns>
 public float GeneralFuncForDrawDec(float q, Enums.TypeFunction typeFunction, Enums.NameFunction nameFunc, float dx)
 => generalFunctionsByNameFunc[nameFunc](q, typeFunction, dx);