コード例 #1
0
        /// <summary>
        /// Объединение двух массивов с удалением одного из двух близких (ближе eps) друг к другу элементов
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <param name="eps"></param>
        /// <returns></returns>
        public static double[] Distinct(double[] a, double[] b, double eps = 1e-6)
        {
            double[] m = Expendator.Union(a, b);
            Array.Sort(m);
            List <double> l = new List <double>(a.Length);

            l.Add(m[0]);
            int k = 0;

            for (int i = 1; i < m.Length; i++)
            {
                if (m[i] - m[k] >= eps)
                {
                    l.Add(m[i]);
                    k = i;
                }
            }
            return(l.ToArray());
        }
コード例 #2
0
        /// <summary>
        /// Каррирование отображения в соответствии с параметрами
        /// </summary>
        /// <param name="C">Параметр каррирования</param>
        /// <param name="c">Фиксированные аргументы</param>
        /// <returns></returns>
        public CkToCnFunc CarrByFirstOrLastArgs(CarringType C = CarringType.LastArgs, params Complex[] c)
        {
            if (func == null)
            {
                CnToCFunction[] mas = new CnToCFunction[EDimention];

                switch (C)
                {
                case CarringType.FirstArgs:
                    for (int i = 0; i < mas.Length; i++)
                    {
                        mas[i] = (CVectors v) => this.FuncMas[i](new CVectors(Expendator.Union(c, v.ComplexMas)));
                    }
                    break;

                default:
                    for (int i = 0; i < mas.Length; i++)
                    {
                        mas[i] = (CVectors v) => this.FuncMas[i](new CVectors(Expendator.Union(v.ComplexMas, c)));
                    }
                    break;
                }
                return(new CkToCnFunc(mas));
            }
            else
            {
                VecToVec h;
                switch (C)
                {
                case CarringType.FirstArgs:
                    h = (CVectors v) => func(new CVectors(Expendator.Union(c, v.ComplexMas)));
                    break;

                default:
                    h = (CVectors v) => func(new CVectors(Expendator.Union(v.ComplexMas, c)));
                    break;
                }
                return(new CkToCnFunc(h));
            }
        }
コード例 #3
0
 /// <summary>
 /// Интеграл от отображения по одному аргументу (другие зафиксированы)
 /// </summary>
 /// <param name="beforeArg">Фиксированные аргументы до изменяемого</param>
 /// <param name="afterArg">Фиксированные аргументы после изменяемого</param>
 /// <param name="t1"></param>
 /// <param name="t2"></param>
 /// <param name="t3"></param>
 /// <param name="t4"></param>
 /// <param name="tm"></param>
 /// <param name="tp"></param>
 /// <param name="eps"></param>
 /// <param name="pr"></param>
 /// <param name="gr"></param>
 /// <returns></returns>
 public CVectors IntegralAmoutOneArg(CVectors beforeArg, CVectors afterArg, double t1, double t2, double t3, double t4, double tm, double tp, double eps, double pr, double gr)
 {
     FuncMethods.DefInteg.GaussKronrod.ComplexVectorFunc tmp = (Complex x, int N) => this.Value(Expendator.Union(beforeArg.ComplexMas, new Complex[] { x }, afterArg.ComplexMas)).ComplexMas;
     return(new CVectors(FuncMethods.DefInteg.GaussKronrod.DINN5_GK(tmp, t1, t2, t3, t4, tm, tp, eps, pr, gr, this.EDimention)));
 }