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); }
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; }
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(); }
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); }
/// <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")); } }
/// <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); } }
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); }