Решить уравнение методом Эйлера, исправить ошибки в коде - VB
Формулировка задачи:
Писал программу все бы ничего только, зараз, не хочет работать.
Писал на Visual basic 6.
код:
Помогите найти ошибку. необходимо решить уравнение методом Эйлера.
Листинг программы
- Dim x(), e(), em(), o() As Single
- Private i, n As Integer
- Private x0, xk, y0, h, miny, maxy, minx, maxx As Single
- Functiоn f(a, b) As Single
- f = (Exp(a) - b) / a
- End Functiоn
- Private Sub Eiler()
- ReDim x(n + 1)
- ReDim e(n + 1)
- e(0) = y0
- For i = 0 To n
- x(i) = x0 + (i * h)
- e(i + 1) = e(i) + h * f(x(i), e(i))
- Next i
- End Sub
- Private Sub EilerM()
- ReDim x(n + 1)
- ReDim em(n + 1)
- em(0) = y0
- For i = 0 To n
- x(i) = x0 + i * h
- em(i + 1) = em(i) + h * f(x(i) + h / 2, em(i) + h / 2 * f(x(i), em(i)))
- Next i
- End Sub
- Private Sub Obhee()
- ReDim x(n + 1)
- ReDim o(n + 1)
- maxy = y0
- miny = y0
- maxx = x0
- minx = x0
- For i = 0 To n
- x(i) = x0 + (i * h)
- o(i) = (Exp(x(i)) + 1 - Exp(1)) / x(i)
- Next i
- End Sub
- Private Sub Command1_Click()
- x0 = Val(Text1.Text)
- y0 = Val(Text2.Text)
- xk = Val(Text3.Text)
- h = Val(Text4.Text)
- n = Round((xk - x0) / h)
- MSFlexGrid1.Cols = 4
- MSFlexGrid1.Rows = n + 2
- MSFlexGrid1.TextMatrix(0, 0) = "x"
- MSFlexGrid1.TextMatrix(0, 1) = "Общее рещение"
- MSFlexGrid1.TextMatrix(0, 2) = "эйлер"
- MSFlexGrid1.TextMatrix(0, 3) = "Эйлер модиф."
- Eiler
- EilerM
- Obhee
- For i = 0 To n
- MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))
- MSFlexGrid1.TextMatrix(i + 1, 1) = Str(o(i))
- MSFlexGrid1.TextMatrix(i + 1, 2) = Str(e(i))
- MSFlexGrid1.TextMatrix(i + 1, 3) = Str(em(i))
- Next i
- minx = x(0)
- maxx = x(n)
- miny = o(0)
- maxy = o(n)
- If e(n) > o(n) Then maxy = e(n)
- If em(n) > o(n) Then maxy = em(n)
- If e(n) > em(n) Then maxy = e(n)
- Label10.Captiоn = Str(miny)
- Label11.Captiоn = Str(maxy)
- Label8.Captiоn = Str(minx)
- Label12.Captiоn = Str(maxx)
- Picture1.Cls
- kx = (Picture1.Width - 1200) / (xk - x0)
- ky = (Picture1.Height - 1000) / (maxy - miny)
- For i = 0 To n - 1
- z1 = (720 + (x(i) - x0) * kx)
- z2 = (5400 - (e(i) - miny) * ky)
- z3 = (720 + (x(i + 1) - x0) * kx)
- z4 = (5400 - (e(i + 1) - miny) * ky)
- Picture1.Line (z1, z2)-(z3, z4), RGB(9999, 0, 0)
- Next i
- For i = 0 To n - 1
- z1 = (720 + (x(i) - x0) * kx)
- z2 = (5400 - (em(i) - miny) * ky)
- z3 = (720 + (x(i + 1) - x0) * kx)
- z4 = (5400 - (em(i + 1) - miny) * ky)
- Picture1.Line (z1, z2)-(z3, z4), RGB(0, 9999, 0)
- Next i
- For i = 0 To n - 1
- z1 = (720 + (x(i) - x0) * kx)
- z2 = (5400 - (o(i) - miny) * ky)
- z3 = (720 + (x(i + 1) - x0) * kx)
- z4 = (5400 - (o(i + 1) - miny) * ky)
- Picture1.Line (z1, z2)-(z3, z4), RGB(0, 0, 9999)
- Next i
- End Sub
Решение задачи: «Решить уравнение методом Эйлера, исправить ошибки в коде»
textual
Листинг программы
- Dim x() As Single, e() As Single, em() As Single, o() As Single
- Dim i As Integer, n As Integer
- Dim x0 As Single, xk As Single, y0 As Single
- Dim h As Single, miny As Single, maxy As Single
- Dim minx As Single, maxx As Single
- Function f(a, b) As Single
- f = (Exp(a) - b) / a
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д