Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
oksana_07
0 / 0 / 0
Регистрация: 05.09.2017
Сообщений: 9
1

Как исправить программу "ОДЗ функции"?

14.10.2017, 14:43. Просмотров 248. Ответов 4
Метки нет (Все метки)

Как написать ОДЗ функции f= f =Sqrt(4 * x + 7) - 3 * Cos(x). Выводит ошибку в этой строке g.DrawLine(p, New Point(xc + Int(mx * x), yc - Int(my * f(x))), New Point(xc + Int(mx * (x + st)), yc - Int(my * f(x + st))))


vb.net
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Public Class Form1
Dim x, a, b, st As Double
Dim w, h, mx, my, xc, yc As Integer
Dim g As Graphics
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PictureBox1.BackColor = Color.White 'Цвет фона
Oval.Parent = PictureBox1
'параметры холста
w = PictureBox1.Width : h = PictureBox1.Height
Dim bmp = New Bitmap(w, h)
g = Graphics.FromImage(bmp)
 
'Расположение системы координат в окне
Dim xb, xe, yb, ye As Double
xb = -12 : xe = 12 : yb = 10 : ye = -10 'границы системы координат по x,y
Dim xlen, ylen As Integer
xlen = Math.Abs(Int(xb)) + Math.Abs(Int(xe)) : ylen = Math.Abs(Int(yb)) + Math.Abs(Int(ye)) 'длина между границами по x,y
mx = Math.Min(w / xlen, h / ylen) : my = mx 'масштаб по x,y(сколько пикселей в одной единице)
 
'границы в пикселях
Dim xbp, xep, ybp, yep As Integer
xbp = (w - mx * xlen) / 2 : xep = (w + mx * xlen) / 2
ybp = (h - my * ylen) / 2 : yep = (h + my * ylen) / 2
xc = xbp + mx * Math.Abs(Int(xb)) : yc = ybp + my * Math.Abs(Int(yb)) 'координаты центра в пикселях
 
'оси
Draw()
drawGraph(New Pen(Color.Red), -12.5, 12.5, 0.05) ' нарисовать график
 
PictureBox1.Image = bmp
 
a = -12.5 : b = 12.5 : st = TrackBar1.Value / 30
x = a
Timer1.Enabled = True
End Sub
 
 
Private Sub Draw()
Dim p = New Pen(Color.Blue)
g.DrawLine(p, New Point(0, yc), New Point(w, yc))
g.DrawLine(p, New Point(xc, 0), New Point(xc, h))
 
'x
Dim i As Integer
i = xc - mx
Do While i > 0
g.DrawLine(p, New Point(i, yc - 2), New Point(i, yc + 2))
i -= mx
Loop
 
i = xc + mx
Do While i < w
g.DrawLine(p, New Point(i, yc - 2), New Point(i, yc + 2))
i += mx
Loop
 
'y
i = yc - my
Do While i > 0
g.DrawLine(p, New Point(xc - 2, i), New Point(xc + 2, i))
i -= my
Loop
 
i = yc + my
Do While i < h
g.DrawLine(p, New Point(xc - 2, i), New Point(xc + 2, i))
i += my
Loop
 
'подписываем оси
g.DrawString("Y", New Font("Arial", 16), Brushes.Blue, New PointF(xc + 10, 10))
g.DrawString("X", New Font("Arial", 16), Brushes.Blue, New PointF(w - 20, yc - 40))
 
'Стрелки на осях
'x
g.DrawLine(p, New Point(w - 10, yc + 5), New Point(w, yc))
g.DrawLine(p, New Point(w - 10, yc - 5), New Point(w, yc))
'y
g.DrawLine(p, New Point(xc, 0), New Point(xc + 5, 10))
g.DrawLine(p, New Point(xc, 0), New Point(xc - 5, 10))
End Sub 'нарисовать систему координат
 
Function f(ByVal x As Double) As Double
f = Math.Sqrt(4 * x + 7) - 3 * Math.Cos(x)
End Function 'задаём функцию графика
 
Private Sub drawGraph(ByVal p As Pen, ByVal a As Double, ByVal b As Double, ByVal st As Double)
For x As Double = a To b Step st
XMLВыделить код
1
  g.DrawLine(p, New Point(xc + Int(mx * x), yc - Int(my * f(x))), New Point(xc + Int(mx * (x + st)), yc - Int(my * f(x + st))))
Next
End Sub 'рисуем график
 
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If (x > b) Then x = a
Oval.Left = (xc + Int(mx * (x + st))) - Oval.Width / 2
Oval.Top = (yc - Int(my * f(x + st))) - Oval.Height / 2
x += st
End Sub 'передвигаем шарик
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2017, 14:43
Ответы с готовыми решениями:

Как исправить ошибку "Приведение строки "" к типу "Double" является недопустимым"?
Выдает ошибку в строке nasel(n).mat = Int(line(2)). Приведение строки &quot;&quot; к типу...

Как исправить ошибку: "MsoShapeType" в пространстве имен "Microsoft.Office.Core" является неоднозначным.
Перевожу код программы из VBA worda на VB 2010 вот код (из темы в разделе VBA...

Исправить ошибку "State не может использоваться как выражение"
Простейший код, но подчеркивает Winsock1.State &lt;&gt; sckClosed, пишет что State не...

как исправить ошибку "Cannot create ActiveX component."
Здравствуйте. Есть сайт. на нем страница отправки сообщения. есть textbox-ы и...

Как исправить ошибку "Функция возвращает значение не для всех путей выполнения"?
Как исправить ошибку &quot; Функция возвращает значение не для всех путей...

4
Alex77755
10760 / 3329 / 557
Регистрация: 13.02.2009
Сообщений: 9,799
16.10.2017, 12:53 2
f= f =Sqrt
странная функция, однако...
ОДЗ функции
ну сформулируй без программирования просто словами область метода Sqrt
Или и в школе за тебя мама уроки делала?
Sqrt - Возвращает квадратный корень из указанного числа.
понял как определить ОДЗ функции? Сравнить выражение с 0. Больше или равно
А для начала пойми на каком языке кодишь
Если ваш бэйсик выдает конструкции типа Imports System, sender As Object, Public Class Form1, то вам СЮДА!
0
MrCrown
840 / 811 / 200
Регистрация: 03.10.2012
Сообщений: 845
16.10.2017, 15:23 3
Цитата Сообщение от oksana_07 Посмотреть сообщение
Выводит ошибку в этой строке g.DrawLine(p, New Point(xc...
В вызове функции drawGraph
Цитата Сообщение от oksana_07 Посмотреть сообщение
drawGraph(New Pen(Color.Red), -12.5, 12.5, 0.05) ' нарисовать график
вы передаете в параметр a отрицательное значение, в результате при вычислении функции f,
получается корень из отрицательного числа.
подставьте другое значение, например
vb.net
1
drawGraph(New Pen(Color.Red), 6, 12.5, 0.05)
2. Что такое Oval
0
Миниатюры
Как исправить программу "ОДЗ функции"?  
MrCrown
840 / 811 / 200
Регистрация: 03.10.2012
Сообщений: 845
16.10.2017, 17:20 4
Извиняюсь, недопонял. ОДЗ - это область допустимых значений что-ли?
Ну, тогда так, например
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function f(ByVal x As Double) As Double
        If 4 * x + 7 = 0 OrElse 4 * x + 7 > 0 Then
            f = Math.Sqrt(4 * x + 7) - 3 * Math.Cos(x)
        Else
            Return 0
        End If
 
    End Function 'задаём функцию графика
 
    Private Sub drawGraph(ByVal p As Pen, ByVal a As Double, ByVal b As Double, ByVal st As Double)
        For x As Double = a To b Step st
            If 4 * x + 7 = 0 OrElse 4 * x + 7 > 0 Then
                p = New Pen(Color.Green)
            Else
                p = New Pen(Color.Red)
            End If
            g.DrawLine(p, New Point(xc + Int(mx * x), yc - Int(my * f(x))), New Point(xc + Int(mx * (x + st)), yc - Int(my * f(x + st))))
        Next
    End Sub 'рисуем график
Здесь зеленым цветом - ОДЗ в заданном диапазоне
0
Миниатюры
Как исправить программу "ОДЗ функции"?  
Alex77755
10760 / 3329 / 557
Регистрация: 13.02.2009
Сообщений: 9,799
16.10.2017, 18:41 5
vb.net
1
  If 4 * x + 7 = 0 OrElse 4 * x + 7 > 0 Then
А что в NET нет оператора ">="
0
16.10.2017, 18:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2017, 18:41

Как исправить ошибку "для предложения Handles требуется переменная с модификатором WithEvents"?
Public Class Form1 Public Class Form1 Dim PotPts() As Point =...

Обработка "null" в MS Access "Приведение типа "|DBNull" к типу "String" является недопустимым"
Здравствуйте. Работаю с базой MS Access Вывожу в DataGridView таблицу...

Поиск в DGW вылетает с ошибкой "Приведение типа "|DBNull" к типу "String" является недопустимым."
В общем такой вопрос. Код рабочий. Только у меня не работает. For i = 0...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru