public void FunctionValueTest() { // Arrange. MyFunction func = new MyFunction { Y = 0.827, Z = 25.001 }; // Act. double val = func[6.251]; // Assert. Assert.AreEqual(0.7121, val, 1e-4); }
/// <summary> /// Обработчик нажатия кнопки построения графика функции. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void plotFuncButton_Click(object sender, EventArgs e) { // Проверяем вводимые данные на корректность. if (!xMinInputBox.DoubleValueAvailable) { xMinInputBox.Focus(); xMinInputBox.SelectAll(); return; } if (!xMaxInputBox.DoubleValueAvailable) { xMaxInputBox.Focus(); xMaxInputBox.SelectAll(); return; } if (!dxInputBox.DoubleValueAvailable) { dxInputBox.Focus(); dxInputBox.SelectAll(); return; } if (xMinInputBox.DoubleValue > xMaxInputBox.DoubleValue) { MessageBox.Show("Xmax должно быть меньше или равно Xmin", "Ошибка", MessageBoxButtons.OK); return; } if (dxInputBox.DoubleValue <= 0.0) { MessageBox.Show("∆x должно быть больше 0", "Ошибка", MessageBoxButtons.OK); return; } // Устанавливаем граничные значения для оси X. plotterControl1.Settings.StartX = xMinInputBox.DoubleValue; plotterControl1.Settings.StopX = xMaxInputBox.DoubleValue; _myFunction = new MyFunction { Y = yTrackBar.Value, Z = zTrackBar.Value }; var points = _myFunction.Evaluate(xMinInputBox.DoubleValue, xMaxInputBox.DoubleValue, dxInputBox.DoubleValue); // Устанавливаем граничные знчения для оси Y. var maxY = 1.0; var minY = -1.0; if (points != null) { maxY = points.Max(p => p.Max(k => k.Y)); minY = points.Min(p => p.Min(k => k.Y)); } var d = (maxY - minY) / 10; if (Math.Abs(maxY - minY) < 1e-9) { d = 1; } plotterControl1.Settings.StopY = maxY + d; plotterControl1.Settings.StartY = minY - d; // Добавляем задание для отрисовки нашей функции. plotterControl1.Tasks.Clear(); plotterControl1.Tasks.Add(new PlotterControl.PlotTask { Points = points, Legend = "F(x)" }); if (oneToOneYScaleRadioButton.Checked) { plotterControl1.Settings.ScaleY = plotterControl1.CalculateOneToOneScaleY(); } plotterControl1.Redraw(); _drawIntegralButtons.SetProperty("Enabled", true); }