Private Sub Form_Unload(Cancel As Integer)




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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: