private void button_trueSolution_Click(object sender, EventArgs e) { TrueSolution trueSolution = new TrueSolution(Convert.ToDouble(textBox_x_0.Text), Convert.ToDouble(textBox_u_0.Text)); trueSolution.FindPoints(Convert.ToDouble(textBox_borderRight.Text)); cartesianChart1.Series.Add(new LineSeries { Title = "Истинное решение", Values = new ChartValues <ObservablePoint>(trueSolution .GetPoints() .Select(_ => new ObservablePoint(_.X, _.V))), PointGeometry = DefaultGeometries.Square, Stroke = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(107, 185, 69)), PointGeometrySize = 5 }); }
private void button_start_Click(object sender, EventArgs e) { CounterOfTests++; if (comboBox_TaskSelect.SelectedIndex == 0 || comboBox_TaskSelect.SelectedIndex == 1) { Function Func; if (comboBox_TaskSelect.SelectedIndex == 0) { Func = new TestFunction(); InitDataGrid_TestTask(); } else { Func = new BasicFunction(); InitDataGrid_Task1(); } Func <double, double, double> function = Func.FunctionValue; Runge_Kutta_2 RK_2 = new Runge_Kutta_2(Convert.ToDouble(textBox_x_0.Text), Convert.ToDouble(textBox_u_0.Text), Convert.ToDouble(textBox_h.Text), Convert.ToDouble(textBox_eps.Text), Convert.ToDouble(textBox_borderRight.Text), Convert.ToDouble(textBox_borderAccuracy.Text), Convert.ToInt32(textBox_max_steps.Text), function, checkBox_StepControlChecked.Checked); RK_2.Run(); cartesianChart1.Series.Add(new LineSeries { Title = "Численное решение #" + Convert.ToString(CounterOfTests), Values = new ChartValues <ObservablePoint>(RK_2 .GetPoints() .Select(_ => new ObservablePoint(_.X, _.V))), PointGeometrySize = 5 }); List <MetodInfo> metodInfos = RK_2.GetMetodInfos(); List <FunctionValue> functionValues = RK_2.GetFunctionValues(); if (comboBox_TaskSelect.SelectedIndex == 0) { TrueSolution trueSolution = new TrueSolution(Convert.ToDouble(textBox_x_0.Text), Convert.ToDouble(textBox_u_0.Text)); for (int index = 0; index < metodInfos.Count; index++) { var metodInfo = metodInfos[index]; var functionValue = functionValues[index]; dataGridView_MetodInfo.Rows.Add (metodInfo.Iteration, metodInfo.X, functionValue.V, functionValue.VHalf, functionValue.DeltaV, metodInfo.e, metodInfo.H, metodInfo.CountMinusH, metodInfo.CountPlusH, trueSolution.FunctionValue(metodInfo.X, functionValue.V), Math.Abs(trueSolution.FunctionValue(metodInfo.X, functionValue.V) - functionValue.V) .ToString("F8")); } dataGridView_MetodInfo.AutoResizeColumns(); Func <double, double, double> func = trueSolution.FunctionValue; ExperimentInfo experimentInfo = new ExperimentInfo(metodInfos, functionValues, func); InitDataGrid_TestTaskInfo(); dataGridView_TaskInfo.Rows.Add(experimentInfo.StepsCount, Convert.ToDouble(textBox_borderRight.Text) - experimentInfo.LastX, experimentInfo.MaxE, experimentInfo.HPlusCount, experimentInfo.HMinusCount, experimentInfo.MaxH, experimentInfo.XMaxH, experimentInfo.MinH, experimentInfo.XMinH, experimentInfo.MaxDeltaUV, experimentInfo.XMaxDeltaUV); } else { for (int index = 0; index < metodInfos.Count; index++) { var metodInfo = metodInfos[index]; var functionValue = functionValues[index]; dataGridView_MetodInfo.Rows.Add (metodInfo.Iteration, metodInfo.X, functionValue.V, functionValue.VHalf, functionValue.DeltaV, metodInfo.e, metodInfo.H, metodInfo.CountMinusH, metodInfo.CountPlusH); } dataGridView_MetodInfo.AutoResizeColumns(); ExperimentInfo experimentInfo = new ExperimentInfo(metodInfos, functionValues); InitDataGrid_TaskInfo(); dataGridView_TaskInfo.Rows.Add(experimentInfo.StepsCount, Convert.ToDouble(textBox_borderRight.Text) - experimentInfo.LastX, experimentInfo.MaxE, experimentInfo.HMinusCount, experimentInfo.HPlusCount, experimentInfo.MaxH, experimentInfo.XMaxH, experimentInfo.MinH, experimentInfo.XMinH); } } else { InitDataGrid_Task2(); FunctionF f = new FunctionF(); FunctionG g = new FunctionG(Convert.ToDouble(textBox_a.Text), Convert.ToDouble(textBox_b.Text)); Runge_Kutta_2_System RK_2_s = new Runge_Kutta_2_System(Convert.ToDouble(textBox_x_0.Text), Convert.ToDouble(textBox_u_0.Text), Convert.ToDouble(textBox_y_0.Text), Convert.ToDouble(textBox_h.Text), Convert.ToDouble(textBox_eps.Text), Convert.ToDouble(textBox_borderRight.Text), Convert.ToDouble(textBox_borderAccuracy.Text), Convert.ToInt32(textBox_max_steps.Text), checkBox_StepControlChecked.Checked, g.FunctionValue, f.FunctionValue); RK_2_s.Run(); List <MetodInfo> metodInfos = RK_2_s.GetMetodInfos(); List <Point2D> functionValues = RK_2_s.GetPoints(); ExperimentInfoSystem experimentInfo = new ExperimentInfoSystem(metodInfos, functionValues); cartesianChart1.Series.Add(new LineSeries { Title = "Численное решение #" + Convert.ToString(CounterOfTests), Values = new ChartValues <ObservablePoint>(RK_2_s .GetPoints() .Select(_ => new ObservablePoint(_.X, _.V1))), PointGeometrySize = 5 }); cartesianChart2.Series.Add(new LineSeries { Title = "Численное решение #" + Convert.ToString(CounterOfTests), Values = new ChartValues <ObservablePoint>(RK_2_s .GetPoints() .Select(_ => new ObservablePoint(_.X, _.V2))), PointGeometrySize = 5 }); cartesianChart3.Series.Add(new LineSeries { Title = "Численное решение #" + Convert.ToString(CounterOfTests), Values = new ChartValues <ObservablePoint>(RK_2_s .GetPoints() .Select(_ => new ObservablePoint(_.V1, _.V2))), PointGeometrySize = 5 }); for (int index = 0; index < metodInfos.Count; index++) { var metodInfo = metodInfos[index]; var functionValue = functionValues[index]; dataGridView_MetodInfo.Rows.Add (metodInfo.Iteration, metodInfo.X, functionValue.V1, functionValue.V2, metodInfo.e, metodInfo.H, metodInfo.CountMinusH, metodInfo.CountPlusH); } dataGridView_MetodInfo.AutoResizeColumns(); InitDataGrid_TaskInfo(); dataGridView_TaskInfo.Rows.Add(experimentInfo.StepsCount, Convert.ToDouble(textBox_borderRight.Text) - experimentInfo.LastX, experimentInfo.MaxE, experimentInfo.HMinusCount, experimentInfo.HPlusCount, experimentInfo.MaxH, experimentInfo.XMaxH, experimentInfo.MinH, experimentInfo.XMinH); } }