End
End Sub
Private Sub Preview_Click()
Form2.Show (1)
End Sub
Private Sub rects_Click()
Dim n As Integer, k As Integer
Dim y As Double, y1 As Double, x As Double, r As Double, s As Double
Dim tmp As Double, minf As Double, maxf As Double
Dim a As Double, b As Double, sw As Double, sh As Double, zv As Double, kor As Double
a = Val(Form4.Text1.Text) 'чтение введённого значения a
b = Val(Form4.Text2.Text) 'чтение введённого значения b
n = Val(Form4.Text3.Text) 'чтение введённого значения n
If (n <= 0) Or (a >= b) Then 'проверка корректности данных
MsgBox ("Введены некорректные данные") 'вывод сообщения об ошибке
Exit Sub 'выход из функции
End If 'конец проверки
sw = b - a 'вычисление масштаба по оси x
kor = ((-18 + 6 * 33 ^ (1 / 2.5)) ^ (1 / 2.5)) / 6
minf = f(a)
maxf = f(a)
If minf > f(b) Then minf = f(b)
If maxf < f(b) Then maxf = f(b)
If (a >= kor) And (b <= kor) Then
If minf > f(kor) Then minf = f(kor)
If maxf < f(kor) Then maxf = f(kor)
End If
If (a >= -kor) And (b <= -kor) Then
If minf > f(-kor) Then minf = f(-kor)
If maxf < f(-kor) Then maxf = f(-kor)
End If
sh = maxf - minf 'вычисление масштаба по оси y
zv = maxf
If maxf < 0 Then zv = 0
If minf > 0 Then zv = sh
r = (Log((b ^ 2 + 1) / (b ^ 2 + 2.5)) - Log((a ^ 2 + 1) / (a ^ 2 + 2.5))) 'реальное значение
Form5.Picture1.Cls 'очистка области рисования
Form5.Picture1.DrawWidth = 1 'установка тонкого пера
Form5.Picture1.ScaleWidth = sw 'установка масштаба по оси x
Form5.Picture1.ScaleHeight = sh 'установка масштаба по оси y
For tmp = minf To maxf Step sh / 10 'цикл - рисование засечек по оси y
Form5.Picture1.Line (0, maxf - tmp)-(sw / 40, maxf - tmp) ' рисование засечки в точке tmp
Form5.Picture1.CurrentX = sw / 40 'установка текущего значения координаты пера по оси x
Form5.Picture1.CurrentY = maxf - tmp 'установка текущего значения координаты пера по оси y
Form5.Picture1.Print Format(tmp, "#0.00") 'вывод подписи при зесечке с двумя знаками после запятой
Next tmp 'конец цикла
Form5.Picture1.Line (0, zv)-(sw, zv)
For tmp = a To b Step sw / 10 'цикл - рисование засечек по оси x
Form5.Picture1.Line (tmp - a, zv)-(tmp - a, zv - sh / 40) ' рисование засечки в точке tmp
Form5.Picture1.CurrentX = tmp - a 'установка текущего значения координаты пера по оси x
Form5.Picture1.CurrentY = zv - sh / 20 'установка текущего значения координаты пера по оси y
Form5.Picture1.Print Format(tmp, "#0.00") 'вывод подписи при зесечке с двумя знаками после запятой
Next tmp 'конец цикла
s = 0 'начальное значение интеграла
y1 = f(a) 'начальное значение функции
Form5.Picture1.DrawWidth = 2 'установка жирного пера
For k = 1 To 500 'цикл - рисование графика функции
x = a + (b - a) * k / 500 'вычисление x
y = f(x) 'вычисление y
Form5.Picture1.Line (x - a - (x - a) / 500, maxf - y1)-(x - a, maxf - y) 'рисование части графика
y1 = y 'запоминание текущего результата для использывания на следующем шаге
Next k 'конец цикла
y1 = f(a) 'начальное значение функции
Form5.Picture1.DrawWidth = 1 'установка тонкого пера
For k = 1 To n 'цикл - вычисление интеграла и рисование прямоугольников
x = a + (b - a) * k / n 'вычисление x
y = f(x) 'вычисление y
Form5.Picture1.Line (x - (b - a) / n - a, zv)-(x - (b - a) / n - a, maxf - y1) 'рисование левой стороны прямоугольника
Form5.Picture1.Line (x - (b - a) / n - a, maxf - y1)-(x - a, maxf - y1) 'рисование верхней стороны прямоугольника
Form5.Picture1.Line (x - a, maxf - y1)-(x - a, zv) 'рисование правой стороны прямоугольника
s = s + (b - a) * y1 / n 'формула прямоугольника
y1 = y 'запоминание текущего результата для использывания на следующем шаге
Next k 'конец цикла
Form5.Label1.Caption = "Точное решение: " + CStr(Abs(r)) 'вывод точного решения
Form5.Label2.Caption = "Решение методом прямоугольников: " + CStr(Abs(s)) 'вывод решения методом прямоугольников
Form5.Show (1) 'модальный показ формы с рисунком
End Sub
рис 2. Метод прямоугольников
Private Sub Researh_Click()
Dim n As Integer, i As Integer
Dim yp As Double, x As Double, r As Double, yt As Double, a As Double, b As Double
Dim yp1 As Double, sp As Double, st As Double, tmp As Double, yt1 As Double
Dim sh As Double
a = 1
b = 2.5
r = (Log((b ^ 2 + 1) / (b ^ 2 + 2.5)) - Log((a ^ 2 + 1) / (a ^ 2 + 2.5))) 'реальное значение
Form1.Picture1.DrawWidth = 1 'установка тонкого пера
Form1.Picture1.ForeColor = QBColor(0) 'установка чёрного цвета линии
Form1.Picture1.ScaleWidth = 190 'установка масштаба по оси x
sh = 0.005
Form1.Picture1.ScaleHeight = sh 'установка масштаба по оси y
For tmp = 0 To sh Step sh / 10 'цикл - рисование засечек по оси y
Form1.Picture1.Line (0, sh - tmp)-(2, sh - tmp) ' рисование засечки в точке tmp
Form1.Picture1.CurrentX = 2 'установка текущего значения координаты пера по оси x
Form1.Picture1.CurrentY = sh - tmp 'установка текущего значения координаты пера по оси y
Form1.Picture1.Print tmp 'вывод подписи при зесечке
Next tmp 'конец цикла
For tmp = 10 To 200 Step 10 'цикл - рисование засечек по оси x