private void TransformWariety(string ABCfile)
        {
            double w = 0, max = 0, tmp;

            using (StreamReader r = new StreamReader(ABCfile))
            {
                string   s = r.ReadLine();
                string[] st;
                while (true)
                {
                    s = r.ReadLine();
                    if (s == null)
                    {
                        break;
                    }
                    st  = s.Replace('.', ',').Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    tmp = new Number.Complex(Convert.ToDouble(st[1]), Convert.ToDouble(st[2])).Abs;
                    if (tmp > max)
                    {
                        max = tmp;
                        w   = Convert.ToDouble(st[0]);
                    }
                }
            }
            w            /= 1000;
            textBox1.Text = (w - 5).ToString();
            textBox2.Text = (w + 5).ToString();
        }
        private async void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            Circle fiCirc = Forms.UG.sourceIt.GetCircle;

            double w = textBox4.Text.ToDouble();
            double x0 = textBox5.Text.ToDouble(), X = textBox6.Text.ToDouble(), y0 = textBox7.Text.ToDouble(), Y = textBox8.Text.ToDouble();
            int    xc  = Convert.ToInt32(numericUpDown1.Value);
            int    yc  = Convert.ToInt32(numericUpDown2.Value);
            string tit = $"{Forms.UG.sourceIt.ToShortString()}, {((radioButton1.Checked) ? "ω" : "t")} = {w}, (xmin, xmax, xcount, ymin, ymax, ycount) = ({x0}, {X}, {xc}, {y0}, {Y}, {yc})";

            tit.Show();
            all = yc * xc;

            Normal2D[] norms = Forms.UG.sourceIt.Norms;
            Func <МатКлассы.Point, bool> filter = Forms.UG.sourceIt.Filter;

            timer1.Start();
            IProgress <int> progress = new Progress <int>((p) => { save = p; });

            Forms.UG.toolStripStatusLabel1.Text = "Вычисления запущены";
            time = DateTime.Now;
            Forms.UG.ShowCancelControls();
            Forms.UG.source = new System.Threading.CancellationTokenSource();
            System.Threading.CancellationToken token = Forms.UG.source.Token;
            if (radioButton1.Checked)
            {
                await Task.Run(() =>
                {
                    МатКлассы.Waves.Circle.FieldToFileParallel("3D ur, uz.txt",
                                                               (double x, double y) => uxwMemoized(x, y, w, Forms.UG.sourceIt),
                                                               x0, X, xc, y0, Y, yc,
                                                               progress,
                                                               token,
                                                               filter,
                                                               tit
                                                               );
                });
            }
            else
            {
                await Task.Run(() =>
                {
                    МатКлассы.Waves.Circle.FieldToFileOLD("3D ur, uz.txt", "",
                                                          (double x, double y) =>
                    {
                        var t      = Forms.UG.u(x, y, w, norms);
                        double cor = new Number.Complex(x - fiCirc.center.x, y - fiCirc.center.y).Arg;
                        return(t[0] * Math.Cos(cor) + t[1] * Math.Sin(cor), t[2]);
                    },
                                                          x0, X, xc, y0, Y, yc,
                                                          progress,
                                                          token,
                                                          filter,
                                                          tit,
                                                          false
                                                          );
                });
예제 #3
0
 private void othergraph(string func, ComplexFunc f, double beg, int k, double hh)
 {
     prbar = new int[k];
     chart1.Series.Add($"Re {func}"); chart1.Series[0].Color  = Color.Red;
     chart1.Series.Add($"Im {func}"); chart1.Series[1].Color  = Color.Green;
     chart1.Series.Add($"Abs {func}"); chart1.Series[2].Color = Color.Blue;
     for (int i = 0; i < 3; i++)
     {
         chart1.Series[i].BorderWidth = 3;
         chart1.Series[i].ChartType   = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
         chart1.Series[i].MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Circle;
         chart1.Series[i].ToolTip     = "X = #VALX, Y = #VALY";
     }
     for (int i = 0; i < k; i++)
     {
         double         arg = beg + i * hh;
         Number.Complex val = f(arg); //val.Show();
         chart1.Series[0].Points.AddXY(arg, val.Re);
         chart1.Series[1].Points.AddXY(arg, val.Im);
         chart1.Series[2].Points.AddXY(arg, val.Abs);
         prbar[i] = 1;
     }
     chart1.Titles[0].Text = $"График {func}(ω)";
 }
        private void button1_Click(object sender, EventArgs e)
        {
            абКонсоль.GRFORM.Init();
            //РабКонсоль.GRFORM.chart1.Series[0].Points.Clear(); РабКонсоль.GRFORM.chart1.Series[1].Points.Clear();

            count = Convert.ToInt32(numericUpDown1.Value);
            x     = Convert.ToDouble(textBox1.Text);
            z     = Convert.ToDouble(textBox2.Text);
            string s1 = "", s2 = "";

            if (radioButton1.Checked)
            {
                a = new Number.Complex(0); b = new Number.Complex(абКонсоль.t1); s1 = $" на отрезке [0,t1={b}]";
            }
            if (radioButton2.Checked)
            {
                a = new Number.Complex(абКонсоль.t1, 0); b = new Number.Complex(абКонсоль.t1, -абКонсоль.tm); s1 = $" на отрезке [t1={a},t1-itm={b}]";
            }
            if (radioButton3.Checked)
            {
                a = new Number.Complex(абКонсоль.t1, -абКонсоль.tm); b = new Number.Complex(абКонсоль.t4, -абКонсоль.tm); s1 = $" на отрезке [t1-itm={a},t4-itm={b}]";
            }
            if (radioButton4.Checked)
            {
                a = new Number.Complex(абКонсоль.t4, -абКонсоль.tm); b = new Number.Complex(абКонсоль.t4); s1 = $" на отрезке [t4-itm={a},t4={b}]";
            }
            if (radioButton5.Checked)
            {
                a = new Number.Complex(абКонсоль.t4); b = new Number.Complex(абКонсоль.gr); s1 = $" на отрезке [t4={a},gr={b}]";
            }

            h  = (b - a) / (count - 1);
            h1 = (b - a).Abs / (count - 1);

            if (radioButton6.Checked)
            {
                f = (Number.Complex ee) => абКонсоль.K1(ee, z) * абКонсоль.Q(ee) * Number.Complex.Ch(Number.Complex.I * x * ee); s2 = $"K1(α,{z})Q(α)Ch(iα*{x})";
            }
            if (radioButton7.Checked)
            {
                f = (Number.Complex ee) => абКонсоль.K2(ee, z) * абКонсоль.Q(ee) * Number.Complex.Ch(Number.Complex.I * x * ee); s2 = $"K2(α,{z})Q(α)Ch(iα*{x})";
            }
            if (radioButton8.Checked)
            {
                f = (Number.Complex ee) => абКонсоль.K1_(ee, z) * абКонсоль.Q(ee) * Number.Complex.Ch(Number.Complex.I * x * ee); s2 = $"K1'(α,{z})Q(α)Ch(iα*{x})";
            }
            if (radioButton9.Checked)
            {
                f = (Number.Complex ee) => абКонсоль.K2_(ee, z) * абКонсоль.Q(ee) * Number.Complex.Ch(Number.Complex.I * x * ee); s2 = $"K2'(α,{z})Q(α)Ch(iα*{x})";
            }
            if (radioButton10.Checked)
            {
                f = (Number.Complex ee) => абКонсоль.sigma1(ee); s2 = $"σ1(α)";
            }
            if (radioButton11.Checked)
            {
                f = (Number.Complex ee) => абКонсоль.sigma1(ee).Sqr(); s2 = $"σ1(α)^2";
            }

            абКонсоль.GRFORM.chart1.Series[0].Name = "Re " + s2 + s1;
            абКонсоль.GRFORM.chart1.Series[1].Name = "Im " + s2 + s1;

            for (int i = 0; i < count; i++)
            {
                double         arg  = i * h1;
                Number.Complex arg1 = a + i * h;
                Number.Complex fx   = f(arg1); $"f(при {arg}) = {fx}".Show();
                абКонсоль.GRFORM.chart1.Series[0].Points.AddXY(arg, fx.Re);
                абКонсоль.GRFORM.chart1.Series[1].Points.AddXY(arg, fx.Im);
            }


            ForChart.SetAxisesY(ref абКонсоль.GRFORM.chart1);
            абКонсоль.GRFORM.Refresh();
        }