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); } }
public PloteGraph(Equation eq, System.Windows.Forms.DataVisualization.Charting.Chart Graphs) { this.Graphs = Graphs; Variables = eq; }