Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122

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

01.10.2012, 19:54. Показов 5161. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите построить график функции(picturebox) . С возможностью изменения значений a, b, c, t (в поле textbox).
Координаты x и y заданы определённой функцией.
Не понимаю как сделать с помощью pset чтобы координаты x и y задавались функциями.
Миниатюры
Построить график функции в picturebox с возможностью изменения значений  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2012, 19:54
Ответы с готовыми решениями:

Как построить оси координат на picturebox и на этих осях построить график функции
Здравствуйте, в общем не могу разобраться как построить оси координат на picturebox и на этих осях еще построить некую функцию, помогите...

Построить на pictureBox график функции
Построить на pictureBox график функции f(x)=sin(x), x 0 . Построение выполнять попиксельно. За начало координат принять нижний левый угол...

Построить таблицу значений x и y, а потом построить график функции
нужно построить таблицу значений x и y а потом построить график функции...вот данные: функция: y=a*sin(b*x) x принимает значения от...

20
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 22:04
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 22:12
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Explicit
Dim a  As Double, b As Double, c  As Double, t As Double
Private Sub Command1_Click()
   a = Text1.Text: b = Text2.Text: c = Text3.Text
   Picture1.Cls
   Picture1.ForeColor = vbBlue
   Picture1.DrawWidth = 2
   Picture1.Line (0, 10)-(0, -10)
   Picture1.Line (10, 0)-(-10, 0)
   Picture1.DrawWidth = 3
   
   For t = Text4.Text To Text5.Text Step 0.0005
       Picture1.PSet (x(t), y(t)), vbRed
   Next t
   
End Sub
Private Sub Form_Load()
    Picture1.Scale (-10, 10)-(10, -10)
End Sub
Private Function x(ByVal t As Double) As Double
    x = a * t + b * Sin(c * t)
End Function
Private Function y(ByVal t As Double) As Double
    y = a - b * Cos(c * t)
End Function
Вложения
Тип файла: rar Новая проекта.rar (1.7 Кб, 63 просмотров)
2
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
01.10.2012, 22:17  [ТС]
Visual Basic
1
2
 For t = Text4.Text To Text5.Text Step 0.0005
       Picture1.PSet (x(t), y(t)), vbRed
а зачем там ещё одно окно для t??? я что-то не догоняю(
text4 и text 5 для чего служат??
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 22:23
Значение t меняется от значения в text4 до значения в text5 с шагом 0.005
Если t не менять, то получим координаты всего одной точки
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 23:18
sansay, коэффициенты для укороченной
Миниатюры
Построить график функции в picturebox с возможностью изменения значений  
1
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
01.10.2012, 23:20  [ТС]
а реально вообще сделать этот график в excele и через программу которую сами создадим менять значения переменных, тем самым изменяя график?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 23:27
Цитата Сообщение от sansay Посмотреть сообщение
а реально вообще сделать этот график в excele и через программу которую сами создадим менять значения переменных, тем самым изменяя график?
А зачем тебе такой гемор?
0
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
01.10.2012, 23:29  [ТС]
задание вообще такое, я решил проще сделать, просто построить в бэсике. Посмотрим что на это препод скажет
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
02.10.2012, 11:06
Цитата Сообщение от sansay Посмотреть сообщение
а реально вообще сделать этот график в excele и через программу которую сами создадим менять значения переменных, тем самым изменяя график?
- конечно! Причем, легче, чем в VB!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
02.10.2012, 11:44
Лучший ответ Сообщение было отмечено как решение

Решение

Правда, в Excel возникнет техническая проблема: поскольку Excel строит графики при равномерной шкале на оси OX, то вычисленный массив значений придется "переинтерполировать". Впрочем, это не сложно:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Sub Main()
 
Dim X(1 To 1000) As Double
Dim Y(1 To 1000) As Double
 
    a# = [C2]
    b# = [C3]
    c# = [C4]
    
    '::: Çàïîëíåíèå
    
    n% = 0
    
    For t# = -10 To 10 Step 0.1
    
        n% = n% + 1
    
        X(n%) = a# * t# + b# * Sin(c# * t#)
        Y(n%) = a# - b# * Cos(c# * t#)
    
    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
    
    j% = 0
    
    For xx# = xmin# To xmax# Step dx#
    
        For k% = 1 To n% - 1
            If X(k%) <= xx# And X(k% + 1) >= xx# Then
               kk# = (Y(k% + 1) - Y(k%)) / (X(k% + 1) - X(k%))
               yy# = Y(k%) + (xx# - X(k%)) * kk#
               j% = j% + 1
               Cells(j%, 28).Value = xx#
               Cells(j%, 29).Value = yy#
               Exit For
            End If
        Next k%
        
    Next xx#
 
End Sub
Миниатюры
Построить график функции в picturebox с возможностью изменения значений  
Вложения
Тип файла: zip Задачи-VBA-56.zip (24.4 Кб, 25 просмотров)
4
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
02.10.2012, 15:27  [ТС]
А можите код построчно прокомментировать? если честно пока сложновато для понимания
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
02.10.2012, 18:06
Лучший ответ Сообщение было отмечено как решение

Решение

Попробую:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
Колонки 28 и 29 заранее связаны с диаграммой и задают значения X (28) и Y (29). Размеры областей - по 800 точек. Если теперь менять a,b и с и выполнять пересчет - график будет меняться.
3
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
02.10.2012, 21:08
Catstail, а чем это проще, чем в VB6?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
02.10.2012, 21:21
Как Вам сказать... Прикиньте, сколько бы пришлось писать, чтобы в VB6 оси вывести, разметить и т.д. Думаю, в VBA все же короче. Хотя, может быть, Вы и правы.
1
Заблокирован
03.10.2012, 08:33
Цитата Сообщение от Catstail Посмотреть сообщение
Как Вам сказать... Прикиньте, сколько бы пришлось писать, чтобы в VB6 оси вывести, разметить и т.д. Думаю, в VBA все же короче. Хотя, может быть, Вы и правы.
А скажите пожалуйста какие отличия VB от VBA ?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
03.10.2012, 08:41
Цитата Сообщение от inv.DS Посмотреть сообщение
А скажите пожалуйста какие отличия VB от VBA ?
По-моему это не тема для холивара.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.10.2012, 11:09
Я полагаю, inv.DS, хотел спросить о различиях в построении графиков в VB и VBA.
Ведь в обоих присутствуют формы.
Но есть еще и отдельный объект "Диаграмма".
Думаю, добрые люди, кто больше разбирается в терминологии, объяснят детальнее.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
04.10.2012, 12:01
Поясню, почему я выше написал, что в VBA проще. Если строится зависимость Y от X, а X меняется с постоянным шагом от Xmin до Xmax, то продолжаю настаивать: в VBA - проще!:

1) в VBA нужно сформировать программно только два массива X и Y и "подставить их диаграмме", - все остальное Excel сделает сам. А "бантики завязать" можно руками (без программирования в очень внятном пользовательском интерфейсе). Плюс бонус - великолепные возможности презентационной графики Excel (чего на VB не так-то просто добиться)

2) в VB нужно и массивы сформировать, и границы по Y вычислить, и окно смаштабировать, и оси нарисовать и разметить... - больше работы!

При параметрическом задании функции (как в обсуждаемом примере) преимущества VBA несколько снижаются (но остаются не равными нулю).
2
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
05.12.2012, 17:23
а как сделать видимость шага? ну т.е. значения на графике -2 -1 0 1 2 3 и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2012, 17:23
Помогаю со студенческими работами здесь

Построить график функции.Реализовать задачу необходимо с использованием компонентов Chart и PictureBox
Построить график функции согласно своему варианту. Реализовать задачу необходимо с использованием компонентов Chart и PictureBox. 8...

Как сделать рамку PictureBox-а с возможностью изменения размера?
Как возможно сделать рамки примерно как тут? Хоть одну как сделать подскажите? Облазил весь гугел.

Составить таблицу значений функции, построить график функции в полярных системах координат
Здравствуйте! Столкнулся вот с такой задачкой: Составить таблицу значений функции, заданной полярным уравнением r = r(фи), построить...

Построить таблицу значений функции на заданном интервале изменения аргумента
Здравсвтуйте, можете помчь решить аткое уравнение, все сделал кроме него

Используя логическую функцию ЕСЛИ и встроенные математические функции, построить таблицу и график значений функции на от
=ЕСЛИ((A2&lt;0,5;SIN(A2)*COS(A2);ЕСЛИ(A2&gt;=0,8;A2-(LN(A2+1)/2)));exp(A2^2)+ABS(TAN(A2))) Говорит что ошибка в формуле, подскажите как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru