public void DrawCurves()
        {
            SequenceFunc t = (double x, int kk) => Math.Log(0.01 + (x + 1 - 0.1 * kk).Sqr());//1.0/(1.0+kk*x*x);//FuncMethods.Monoms;


            RealFunc[] f = new RealFunc[] { (double x) => Math.Exp(x / (x.Abs() + 1)), (double x) => Math.Sin(x + 2) * Math.Cos(2 * x), (double x) => x.Abs() * Math.Exp(Math.Cos(x)), (double x) => Math.Log(1 + x.Abs()) * Math.Sinh(x / 2), (double x) => Math.Sin(x) - 8.0 / (2 * x + 6), (double x) => x.Abs() + Math.Log(0.01 + x * x) };
            Point[]    b = new Point[] { new Point(0, 5), new Point(-4, 4), new Point(-2, 4), new Point(-2, 2), new Point(-1, 1), new Point(-1, 1) };

            int k = 64;

            int[] mas = new int[k];
            for (int i = 0; i < k; i++)
            {
                mas[i] = i + 1;
            }

            Parallel.For(0, f.Length, (int i) =>
            {
                var c           = FuncMethods.UltraVsNormal(f[i], t, SequenceFuncKind.Other, k, b[i].x, b[i].y);
                StreamWriter fs = new StreamWriter($"Monoms {i + 1}.txt");
                fs.WriteLine($"count normal ultra");
                for (int j = 0; j < k; j++)
                {
                    fs.WriteLine($"{mas[j]} {c.Item1[j]} {c.Item2[j]}");
                }
                fs.Close();
            });


            //k = 75;
            //mas = new int[k];
            //for (int i = 0; i < k; i++)
            //    mas[i] = i + 1;
            //Parallel.For(0, f.Length, (int i) =>
            //{
            //    t = FuncMethods.TrigSystem(b[i].x, b[i].y);
            //    var c = FuncMethods.UltraVsNormal(f[i], t, SequenceFuncKind.Orthogonal, k, b[i].x, b[i].y);
            //    StreamWriter fs = new StreamWriter($"Trig {i + 1}.txt");
            //    fs.WriteLine($"count normal ultra");
            //    for (int j = 0; j < k; j++)
            //        fs.WriteLine($"{mas[j]} {c.Item1[j]} {c.Item2[j]}");
            //    fs.Close();
            //});
        }