Ejemplo n.º 1
0
        private void button1_Click(object sender, EventArgs e)
        {
            int p = Decimal.ToInt32(selectPower.Value);

            double[] arr = new double[p + 1];
            // { double.Parse(textBox1.Text), double.Parse(textBox2.Text), double.Parse(textBox3.Text), double.Parse(textBox4.Text), double.Parse(textBox5.Text), double.Parse(textBox6.Text) };
            for (int i = 0; i <= p; i++)
            {
                arr[i] = double.Parse(Controls["textBox" + (i + 1)].Text);
            }

            Equation eq = new Equation(arr);

            try
            {
                PloteGraph graph = new PloteGraph(eq, chart1);

                if (autosizeX.Checked && autosizeY.Checked)
                {
                    List <Complex> Responce_X_Min_Max = eq.Solve();

                    double xMin = double.NaN;
                    double xMax = double.NaN;

                    for (int i = 0; i < Responce_X_Min_Max.Count; i++)
                    {
                        if (Responce_X_Min_Max[i]._im == 0)
                        {
                            xMin = Responce_X_Min_Max[i]._real;
                            xMax = Responce_X_Min_Max[i]._real;
                            break;
                        }
                    }

                    if (!Double.IsNaN(xMin))
                    {
                        for (int i = 0; i < Responce_X_Min_Max.Count; i++)
                        {
                            if (xMin > Responce_X_Min_Max[i]._real && Responce_X_Min_Max[i]._im == 0)
                            {
                                xMin = Responce_X_Min_Max[i]._real;
                            }

                            if (xMax < Responce_X_Min_Max[i]._real && Responce_X_Min_Max[i]._im == 0)
                            {
                                xMax = Responce_X_Min_Max[i]._real;
                            }
                        }
                    }

                    if (xMin == xMax || Double.IsNaN(xMin) || Double.IsNaN(xMax))
                    {
                        xMin = -10; xMax = 10;
                    }

                    graph.AutoSize(xMin, xMax);
                }

                if (!autosizeX.Checked && !autosizeY.Checked)
                {
                    graph.SizeXandY(Convert.ToDouble(X_min.Text), Convert.ToDouble(X_max.Text), Convert.ToDouble(Y_min.Text), Convert.ToDouble(Y_max.Text));
                }

                if (!autosizeX.Checked && autosizeY.Checked)
                {
                    graph.SizeX(Convert.ToDouble(X_min.Text), Convert.ToDouble(X_max.Text));
                }

                if (autosizeX.Checked && !autosizeY.Checked)
                {
                    List <Complex> Responce_X_Min_Max = eq.Solve();

                    double xMin = double.NaN;
                    double xMax = double.NaN;

                    for (int i = 0; i < Responce_X_Min_Max.Count; i++)
                    {
                        if (Responce_X_Min_Max[i]._im == 0)
                        {
                            xMin = Responce_X_Min_Max[i]._real;
                            xMax = Responce_X_Min_Max[i]._real;
                            break;
                        }
                    }

                    if (!Double.IsNaN(xMin))
                    {
                        for (int i = 0; i < Responce_X_Min_Max.Count; i++)
                        {
                            if (xMin > Responce_X_Min_Max[i]._real && Responce_X_Min_Max[i]._im == 0)
                            {
                                xMin = Responce_X_Min_Max[i]._real;
                            }

                            if (xMax < Responce_X_Min_Max[i]._real && Responce_X_Min_Max[i]._im == 0)
                            {
                                xMax = Responce_X_Min_Max[i]._real;
                            }
                        }
                    }

                    if (xMin == xMax || Double.IsNaN(xMin) || Double.IsNaN(xMax))
                    {
                        xMin = -10; xMax = 10;
                    }

                    graph.SizeY(xMin, xMax, Convert.ToDouble(Y_min.Text), Convert.ToDouble(Y_max.Text));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка: {0}", ex.Message);
            }
        }
Ejemplo n.º 2
0
        public PloteGraph(Equation eq, System.Windows.Forms.DataVisualization.Charting.Chart Graphs)
        {
            this.Graphs = Graphs;

            Variables = eq;
        }