Максимум функции методом золотого сечения, нужно построить график с точками - Visual Basic .NET
Формулировка задачи:
Решение задачи: «Максимум функции методом золотого сечения, нужно построить график с точками»
textual
Листинг программы
Imports System.Windows.Forms.DataVisualization.Charting '… Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim a As Double = 0 Dim b As Double = 4 Dim eps As Double = 0.00001 Dim ff = Function(x) 10 * x / (1 + x ^ 2) Dim xx As Double = miniGold(a, b, eps, ff) Dim yy As Double = ff(xx) Label2.Text = "X=" & xx.ToString Label3.Text = "Y=" & yy.ToString drawGraph(a, b, 50, ff) End Sub Private Function miniGold(ByVal A As Double, ByVal B As Double, ByVal eps As Double, ByVal ff As Func(Of Double, Double)) As Double Dim gs As Double = 0.6180339 Dim xr As Double = A + (B - A) * gs Dim xl As Double = B - (B - A) * gs Dim yr As Double = ff(xr) Dim yl As Double = ff(xl) Do While (B - A) > eps 'If yr < yl Then 'for min If yr > yl Then A = xl xl = xr yl = yr xr = A + (B - A) * gs yr = ff(xr) Else B = xr xr = xl yr = yl xl = B - (B - A) * gs yl = ff(xl) End If Loop Return 0.5 * (A + B) End Function Private Sub drawGraph(ByVal A As Double, ByVal B As Double, ByVal n As Integer, ByVal ff As Func(Of Double, Double)) Dim stp As Double = Math.Abs(B - A) / n Dim x, y As Double With Chart1 .Series.Clear() .Series.Add("curve") .ChartAreas(0).AxisX.Minimum = A .ChartAreas(0).AxisX.Maximum = B .ChartAreas(0).AxisX.Interval = 0.5 With .Series("curve") x = A For i = 1 To n - 1 y = ff(x) .Points.AddXY(x, y) x += stp Next x = B y = ff(x) .Points.AddXY(x, y) .BorderWidth = 2 .ChartType = SeriesChartType.Spline .Color = Color.Red .IsVisibleInLegend = False End With .Show() End With End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д