Построить график функции в picturebox с возможностью изменения значений - VB

Узнай цену своей работы

Формулировка задачи:

Помогите построить график функции(picturebox) . С возможностью изменения значений a, b, c, t (в поле textbox). Координаты x и y заданы определённой функцией. Не понимаю как сделать с помощью pset чтобы координаты x и y задавались функциями.

Решение задачи: «Построить график функции в picturebox с возможностью изменения значений»

textual
Листинг программы
Sub Main()
 
Dim X(1 To 1000) As Double  ' массив для x
Dim Y(1 To 1000) As Double  ' массив для y
 
    a# = [C2]  ' параметры кривой берем с 
    b# = [C3]  ' из соотв. ячеек
    c# = [C4]  ' рабочего листа
    
    '::: Заполнение
    
    n% = 0
    
    For t# = -10 To 10 Step 0.1  ' цикл по t 
    
        n% = n% + 1  ' номер точки
    
        X(n%) = a# * t# + b# * Sin(c# * t#)   ' очередной х
        Y(n%) = a# - b# * Cos(c# * t#)         ' очередной y
    
    Next t#
    
    '::: Приведение к равномерной шкале
    
    xmin# = X(1)
    xmax# = X(1)
    
    ' ищем минимум и максимум простым перебором
    ' в одном цикле 
 
    For i% = 2 To n%
    
        If X(i%) > xmax# Then xmax# = X(i%)
        If X(i%) < xmin# Then xmin# = X(i%)
    
    Next i%
    
    dx# = (xmax# - xmin#) / 800  ' делим отрезок [xmin,xmax] на 800 точек
    
    j% = 0
    
    For xx# = xmin# To xmax# Step dx# 
 
        ' переменная xx проходит от xmin до xmax с РАВНОМЕРНЫМ шагом
    
        For k% = 1 To n% - 1
 
             ' для очередной xx находим две соседние точки x[k] и x[k+1],
             ' между которыми находится xx
 
            If X(k%) <= xx# And X(k% + 1) >= xx# Then
 
               ' kk - угловой коэффициент прямой, соединяющей 
               ' точки (x[k],y[k]) и (x[k+1],y[k+1])
 
               kk# = (Y(k% + 1) - Y(k%)) / (X(k% + 1) - X(k%))
 
               ' yy - значение, соответствующее точке xx 
 
               yy# = Y(k%) + (xx# - X(k%)) * kk#
 
               ' заносим пару xx,yy на лист в область данных диаграммы
 
               j% = j% + 1
               Cells(j%, 28).Value = xx#
               Cells(j%, 29).Value = yy#
 
               Exit For  ' обработали точку - выход из цикла
 
 
            End If
 
        Next k%
        
    Next xx#
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5