public static void Start(Func <double, double> func,
                                 Wavelet.Wavelets wavelets, double omega, FuncMethods.DefInteg.GaussKronrod.NodesCount nodesCount,
                                 NetOnDouble X, NetOnDouble Y, NetOnDouble T)
        {
            Wavelet.countNodes = nodesCount;
            var wavel = Wavelet.Create(wavelets, omega);

            Func <double, double, Complex> f = wavel.GetAnalys(func);

            IProgress <int> progress = new Progress <int>(number => Console.WriteLine(Expendator.GetProcent(number, X.Count * Y.Count).ToString(2) + "%"));

            Create3DGrafics.MakeGrafic(Create3DGrafics.GraficType.PdfPngHtml, $"wavelets{wavelets}",
                                       (a, b) => f(a, b).Abs, X, Y,
                                       progress, new System.Threading.CancellationToken(),
                                       new StringsForGrafic($"Wavelet {wavelets}", "a", "b", "|values|"), true);


            Func <double, double> func2 = wavel.GetSyntesis();

            new MostSimpleGrafic(new Func <double, double>[]
            {
                func,
                func2
            },
                                 T,
                                 new string[] {
                "Исходная функция",
                "Её преобразование туда-сюда"
            },
                                 true).ShowDialog();
        }
        private void DrawNets()
        {
            double x  = textBox1.Text.ToDouble();
            double y  = textBox2.Text.ToDouble();
            double xr = textBox3.Text.ToDouble() / 2;
            double yr = textBox4.Text.ToDouble() / 2;
            int    xn = numericUpDown1.Value.ToInt32();
            int    yn = numericUpDown2.Value.ToInt32();

            X = new NetOnDouble(x - xr, x + xr, xn);
            Y = new NetOnDouble(y - yr, y + yr, yn);

            foreach (var c in chart1.Series)
            {
                c.Points.Clear();
            }

            chart1.Series[0].Points.AddXY(X.Begin, Y.Begin);
            chart1.Series[0].Points.AddXY(X.Begin, Y.End);
            chart1.Series[0].Points.AddXY(X.End, Y.End);
            chart1.Series[0].Points.AddXY(X.End, Y.Begin);
            chart1.Series[0].Points.AddXY(X.Begin, Y.Begin);

            foreach (var xs in X.Array)
            {
                foreach (var ys in Y.Array)
                {
                    chart1.Series[1].Points.AddXY(xs, ys);
                }
            }

            Библиотека_графики.ForChart.SetToolTips(ref chart1);
        }
Example #3
0
        public MostSimpleGrafic(Func <double, double> f, NetOnDouble argumentNet)
        {
            InitializeComponent();
            chart1.Series[0].IsVisibleInLegend = false;
            var points = МатКлассы.Point.Points(new Func <double, double>(t => f(t)), argumentNet.Count - 1, argumentNet.Begin, argumentNet.End, true);

            for (int i = 0; i < points.Length; i++)
            {
                chart1.Series[0].Points.AddXY(points[i].x, points[i].y);
            }
            Библиотека_графики.ForChart.SetToolTips(ref chart1);
        }
 public R2Area(NetOnDouble xNet, NetOnDouble yNet, TextBox Xmin, TextBox Xmax, TextBox Ymin, TextBox Ymax) : this(xNet, yNet)
 {
     this.FormClosing += (o, e) =>
     {
         if (OK)
         {
             Xmin.Text = X.Begin.ToString();
             Xmax.Text = X.End.ToString();
             Ymin.Text = Y.Begin.ToString();
             Ymax.Text = Y.End.ToString();
         }
     };
 }
        public R2Area(NetOnDouble xNet, NetOnDouble yNet)
        {
            InitializeComponent();
            X = xNet.dup;
            Y = yNet.dup;
            SetParams();
            SetEvents();

            chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
            chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
            chart1.ChartAreas[0].AxisX.Crossing          = 0;
            chart1.ChartAreas[0].AxisY.Crossing          = 0;
        }
Example #6
0
        public static void NetOnDoubleExamples()
        {
            void show(NetOnDouble n) => new Vectors(n.Array).Show();

            var net = new NetOnDouble(begin: -1, end: 1, count: 8); // like numpy.linspase

            show(net);                                              // (       -1      -0,7142857142857143     -0,4285714285714286     -0,1428571428571429     0,1428571428571428      0,4285714285714284      0,7142857142857142      1       )

            net = new NetOnDouble(begin: -1, end: 1, step: 0.3);    // like numpy.arange

            show(net);                                              // (       -1      -0,7    -0,4    -0,10000000000000009    0,19999999999999996     0,5     0,7999999999999998      )

            var net2 = new NetOnDouble(net, newCount: 5);

            show(net2); // (       -1      -0,6    -0,19999999999999996    0,20000000000000018     0,6000000000000001      )
        }
        private void GetData()
        {
            wmin       = 1.0 / textBox2.Text.ToDouble() / 1000;
            wmax       = 1.0 / textBox1.Text.ToDouble() / 1000;
            tmin       = textBox3.Text.ToDouble();
            tmax       = textBox4.Text.ToDouble();
            wcount     = numericUpDown1.Value.ToInt32();
            tcount     = numericUpDown2.Value.ToInt32();
            byevery    = numericUpDown3.Value.ToInt32();
            pointcount = numericUpDown4.Value.ToInt32();
            pointmax   = numericUpDown5.Value.ToInt32();
            pointmax2  = numericUpDown6.Value.ToInt32();

            Wnet = new NetOnDouble(wmin, wmax, wcount);
            Tnet = new NetOnDouble(tmin, tmax, tcount);
            epsForWaveletValues = textBox5.Text.ToDouble();

            all = wcount * tcount;
        }
        public static void Start(double begin, double step, int count, string filename, string path,
                                 Wavelet.Wavelets wavelets, double omega, FuncMethods.DefInteg.GaussKronrod.NodesCount nodesCount,
                                 NetOnDouble X, NetOnDouble Y)
        {
            Wavelet.countNodes = nodesCount;
            var wavel = Wavelet.Create(wavelets, omega);

            var mas = Point.CreatePointArray(begin, step, count, filename, path);
            Func <double, double, Complex> f = wavel.GetAnalys(mas);

            IProgress <int> progress = new Progress <int>(number => Console.WriteLine(Expendator.GetProcent(number, X.Count * Y.Count).ToString(2) + "%"));

            Create3DGrafics.MakeGrafic(Create3DGrafics.GraficType.PdfPngHtml, $"wavelets{wavelets}",
                                       (a, b) => f(a, b).Abs, X, Y,
                                       progress, new System.Threading.CancellationToken(),
                                       new StringsForGrafic($"Wavelet {wavelets}", "a", "b", "|values|"), true);

            //Func<double, double> func2 = wavel.GetSyntesis();
            //new MostSimpleGrafic( func2, mas,    "Преобразование",    true).ShowDialog();
        }
Example #9
0
        public MostSimpleGrafic(Func <double, double>[] f, NetOnDouble argumentNet, string[] names, bool parallel = true)
        {
            InitializeComponent();
            chart1.Series.Clear();
            for (int k = 0; k < f.Length; k++)
            {
                chart1.Series.Add(names[k]);
                chart1.Series[k].BorderWidth = 3;
                chart1.Series[k].ChartType   = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

                var points = МатКлассы.Point.Points(new Func <double, double>(t => f[k](t)), argumentNet.Count - 1, argumentNet.Begin, argumentNet.End, parallel);

                for (int i = 0; i < points.Length; i++)
                {
                    chart1.Series[k].Points.AddXY(points[i].x, points[i].y);
                }
            }

            Библиотека_графики.ForChart.SetToolTips(ref chart1);
        }
        /// <summary>
        /// Создать графики по эллипсам
        /// </summary>
        /// <param name="array"></param>
        /// <param name="X"></param>
        /// <param name="Y"></param>
        /// <param name="shortname"></param>
        /// <returns></returns>
        public async static Task GetSurfaces(EllipseParam[] array, NetOnDouble X, NetOnDouble Y, string shortname)
        {
            var mas = array.Where(e => e.GetValue != null).ToArray();

            if (mas.Length == 0)
            {
                return;
            }

            Func <double, double, double> S = (double x, double y) =>
            {
                Point  p   = new Point(x, y);
                double sum = mas[0].GetValue(p);
                for (int i = 1; i < mas.Length; i++)
                {
                    sum += mas[i].GetValue(p);
                }
                return(sum);
            };

            await Библиотека_графики.Create3DGrafics.JustGetGraficInFilesAsync(shortname, shortname, S, X, Y,
                                                                               new Progress <int>(), new System.Threading.CancellationToken(),
                                                                               new Библиотека_графики.StringsForGrafic("Gauss"), Библиотека_графики.Create3DGrafics.GraficType.Pdf, true);
        }
Example #11
0
        /// <summary>
        /// Только создать 3D графики с сохранением в файлы
        /// </summary>
        /// <param name="shortname"></param>
        /// <param name="F"></param>
        /// <param name="xmin"></param>
        /// <param name="xmax"></param>
        /// <param name="ymin"></param>
        /// <param name="ymax"></param>
        /// <param name="count"></param>
        /// <param name="progress"></param>
        /// <param name="token"></param>
        /// <param name="graficType"></param>
        /// <param name="title"></param>
        /// <param name="xlab"></param>
        /// <param name="ylab"></param>
        /// <param name="zlab"></param>
        /// <param name="parallel"></param>
        public static async Task JustGetGraficInFilesAsync(string shortname, string savename, Func <double, double, double> F, NetOnDouble x, NetOnDouble y, IProgress <int> progress, System.Threading.CancellationToken token, StringsForGrafic forGrafic, GraficType graficType = GraficType.PdfPngHtml, bool parallel = true)
        {
            await GetDataToFileAsync(shortname, savename, F, x.Array, y.Array, progress, token, forGrafic, parallel);

            GraficTypeToFile(graficType);
            RemoveOlds(shortname);
            if (x.Count == y.Count)
            {
                await Task.Run(() => Expendator.StartProcessOnly("Magic3Dscript.R"));
            }
        }
Example #12
0
 /// <summary>
 /// Создать 3D график в нужной форме
 /// </summary>
 /// <param name="graficType">Тип графика</param>
 /// <param name="shortname">Имя файла с графиками (без расширения)</param>
 /// <param name="path">Директория, куда будут сохраняться файлы</param>
 /// <param name="F">Функция, чей график надо построить</param>
 /// <param name="xmin">Начало отрезка по первой координате</param>
 /// <param name="xmax">Конец отрезка по первой координате</param>
 /// <param name="ymin">Начало отрезка по второй координате</param>
 /// <param name="ymax">Конец отрезка по второй координате</param>
 /// <param name="count">Число точек в разбиении отрезка. В сетке будет count*count этих точек</param>
 /// <param name="progress">Объект для отслеживания прогресса</param>
 /// <param name="token">Объект для отмены операции</param>
 /// <param name="title">Название поверхности</param>
 /// <param name="xlab">Название оси X</param>
 /// <param name="ylab">Название оси Y</param>
 /// <param name="zlab">Название оси Z</param>
 /// <param name="parallel">Выполнять ли вычисления параллельно</param>
 public static void MakeGrafic(GraficType graficType, string shortname, Func <double, double, double> F, NetOnDouble x, NetOnDouble y, IProgress <int> progress, System.Threading.CancellationToken token, StringsForGrafic forGrafic, bool parallel = true)
 {
     if (graficType == GraficType.Window)
     {
         new nzy3d_winformsDemo.Form1(forGrafic.Title, x.Begin, x.End, x.Count, y.Begin, y.End, y.Count, F).ShowDialog();
     }
     else
     {
         JustGetGraficInFilesAsync(shortname, shortname, F, x, y, progress, token, forGrafic, graficType, parallel).GetAwaiter().GetResult();
         GetForm(shortname);
     }
 }
Example #13
0
 private static async Task GetDataToFileAsync(string shortname, Func <double, double, double> F, double xmin, NetOnDouble x, NetOnDouble y, IProgress <int> progress, System.Threading.CancellationToken token, StringsForGrafic forGrafic, bool parallel = true)
 {
     await GetDataToFileAsync(shortname, shortname, F, x.Array, y.Array, progress, token, forGrafic, parallel);
 }