private void buttonFindMinAndMax_Click(object sender, EventArgs e) { float Lowest = float.MaxValue; float Highest = float.MinValue; Equation eq = equations[listBoxEquations.SelectedIndex]; float prevX = eq.FromX; float step = 100f; float prevY = eq.GetValueInPoint(prevX); while (prevX <= eq.ToX) { float curX = prevX + 1 / step; float curY = eq.GetValueInPoint(curX); if (float.IsNaN(curY)) { prevX += 1 / step; continue; } if (curY < Lowest) { Lowest = curY; MinFuncPoint = new PointF(curX, Lowest); } if (curY > Highest) { Highest = curY; MaxFuncPoint = new PointF(curX, Highest); } prevX = curX; prevY = curY; } pictureBoxMainField.Refresh(); MessageBox.Show("Минимальное значение на заданном промежутке\n" + Lowest.ToString("0.00") + "\nМаксимальное значение на заданном промежутке\n" + Highest.ToString("0.00")); }
private void buttonFuncValueInPoint_Click(object sender, EventArgs e) { Equation eq = equations[listBoxEquations.SelectedIndex]; float pointX = float.Parse(textBoxPointX.Text.Replace('.', ',')); if (eq.FromX > pointX || eq.ToX < pointX) { MessageBox.Show("Выбранная координата не принадлежит области определения"); return; } float valueInPoint = eq.GetValueInPoint(pointX); if (!float.IsNaN(valueInPoint)) { SelectedPointOfEquation = new PointF(pointX, valueInPoint); pictureBoxMainField.Refresh(); MessageBox.Show("Значение функции в точке " + pointX.ToString("0;00") + " = " + valueInPoint.ToString("0")); } else { MessageBox.Show("Значение функции в точке " + pointX.ToString("0;00") + " " + "не существует"); } }