Решение дифференциального уравнения и построение графиков - VB

Узнай цену своей работы

Формулировка задачи:

Здраствуйте, помогите пожалуста выявить в чем проблема. Программа запускается но выдает ошибку run-time error '9'; Subscript out of range. Выделяет 20 строку.
Листинг программы
  1. Dim x() As Single
  2. Dim y() As Single
  3. Dim g() As Single
  4. Dim t() As Single
  5. Private n, i As Integer
  6. Private xk, x0, kx, ky, h As Single
  7. Private k, k1, k2, k3, k4 As Single
  8. Private max, min, y0 As Single
  9. Private Function f(x, y As Single) As Single
  10. f = (x - y) / x
  11. End Function
  12. Private Function v(x As Single) As Single
  13. v = x0 * (c - Log(x0))
  14. End Function
  15. Private Sub EilerMod()
  16. ReDim x(n), y(n)
  17. y(0) = y0
  18. For i = 0 To n
  19. x(i) = x0 + h * i
  20. y(i + 1) = y(i) + h * f(x(i) + h / 2, y(i) + h / 2 * f(x(i), y(i)))
  21. MSFlexGrid1.TextMatrix(1, 0) = Str(x0)
  22. MSFlexGrid1.TextMatrix(i + 2, 0) = Str(x(i + 1))
  23. MSFlexGrid1.TextMatrix(1, 1) = Str(y0)
  24. MSFlexGrid1.TextMatrix(i + 2, 1) = Str(y(i + 1))
  25. Next i
  26. End Sub
  27. Private Sub Rynge_kytt()
  28. ReDim g(n)
  29. g(0) = y0
  30. For i = 0 To n - 1
  31. k1 = h * f(x(i), g(i))
  32. k2 = h * f(x(i) + h / 2, g(i) + k1 / 2)
  33. k3 = h * f(x(i) + h / 2, g(i) + k2 / 2)
  34. k4 = h * f(x(i) + h, g(i) + k3)
  35. k = (k1 + 2 * k2 + 2 * k3 + k4) / 6
  36. g(i + 1) = g(i) + k
  37. MSFlexGrid1.TextMatrix(i + 2, 2) = Str(g(i + 1))
  38. MSFlexGrid1.TextMatrix(1, 2) = Str(g(0))
  39. Next i
  40. End Sub
  41. Private Sub obshee()
  42. ReDim t(n)
  43. c = y0 / x0 + Log(x0)
  44. For i = 0 To n
  45. t(0) = y0
  46. x(i) = x0 + h * i
  47. t(i) = v(x(i))
  48. MSFlexGrid1.TextMatrix(i + 1, 3) = Str(t(i))
  49. Next i
  50. End Sub
  51. Private Sub Command1_Click()
  52. x0 = Val(Text1.Text)
  53. xk = Val(Text1.Text)
  54. h = Val(Text1.Text)
  55. y0 = Val(Text1.Text)
  56. n = (xk - x0) / h
  57. MSFlexGrid1.Rows = n + 2
  58. MSFlexGrid1.Cols = 4
  59. MSFlexGrid1.TextMatrix(0, 0) = "x"
  60. MSFlexGrid1.TextMatrix(0, 1) = "EilerMod"
  61. MSFlexGrid1.TextMatrix(0, 2) = "ГђГіГ*ГЈГҐ-ГЉГіГІГІ"
  62. MSFlexGrid1.TextMatrix(0, 3) = "obshee"
  63. Label5.Caption = Str(x0)
  64. Label6.Caption = Str(xk)
  65. EilerMod
  66. Rynge_kytt
  67. obshee
  68. max = y0
  69. min = y0
  70. For i = 0 To n
  71. If y(i) > max Then
  72. max = y(i)
  73. End If
  74. If y(i) < min Then
  75. min = y(i)
  76. End If
  77. If g(i) > max Then
  78. max = g(i)
  79. End If
  80. If g(i) < min Then
  81. min = g(i)
  82. End If
  83. If t(i) > max Then
  84. max = t(i)
  85. End If
  86. If t(i) < min Then
  87. min = t(i)
  88. End If
  89. Next i
  90. Label7.Caption = Str(min)
  91. Label8.Caption = Str(max)
  92. kx = (Picture1.Width - 1095) / (xk - x0)
  93. ky = (Picture1.Height - 1320) / (max - min)
  94. Picture1.Cls
  95. For i = 0 To n - 1
  96. X1 = 1320 + Round(kx * (x(i - 1) - x0))
  97. X2 = 1320 + Round(kx * (x(i) - x0))
  98. Y1 = 6255 + Round(ky * (y(i - 1) - min))
  99. Y2 = 6255 + Round(ky * (y(i) - min))
  100. Picture1.Line (X1, Y1)-(X2, Y2), RGB(100, 200, 200)
  101. X1 = 1320 + Round(kx * (x(i - 1) - x0))
  102. X2 = 1320 + Round(kx * (x(i) - x0))
  103. Y1 = 6255 + Round(ky * (g(i - 1) - min))
  104. Y2 = 6255 + Round(ky * (g(i) - min))
  105. Picture1.Line (X1, Y1)-(X2, Y2), RGB(400, 300, 300)
  106. X1 = 1320 + Round(kx * (x(i - 1) - x0))
  107. X2 = 1320 + Round(kx * (x(i) - x0))
  108. Y1 = 6255 + Round(ky * (t(i - 1) - min))
  109. Y2 = 6255 + Round(ky * (t(i) - min))
  110. Picture1.Line (X1, Y1)-(X2, Y2), RGB(500, 100, 100)
  111. Next i
  112. End Sub

Решение задачи: «Решение дифференциального уравнения и построение графиков»

textual
Листинг программы
  1. Dim x() As Single
  2. Dim y() As Single
  3. Dim g() As Single
  4. Dim t() As Single
  5. Private n, i As Integer
  6. Private xk, x0, kx, ky, h As Single
  7. Private k, k1, k2, k3, k4 As Single
  8. Private max, min, y0 As Single
  9. Private Function f(x, y As Single) As Single
  10. f = (x - y) / x
  11. End Function
  12. Private Function v(x As Single) As Single
  13. v = x0 * (c - Log(x0))
  14. End Function
  15. Private Sub EilerMod()
  16. ReDim x(n), y(n)
  17. y(0) = y0
  18. For i = 0 To n - 1
  19. x(i) = x0 + h * i
  20. y(i + 1) = y(i) + h * f(x(i) + h / 2, y(i) + h / 2 * f(x(i), y(i)))
  21. MSFlexGrid1.TextMatrix(1, 0) = Str(x0)
  22. MSFlexGrid1.TextMatrix(i + 2, 0) = Str(x(i + 1))
  23. MSFlexGrid1.TextMatrix(1, 1) = Str(y0)
  24. MSFlexGrid1.TextMatrix(i + 2, 1) = Str(y(i + 1))
  25. Next i
  26. End Sub
  27. Private Sub Rynge_kytt()
  28. ReDim g(n)
  29. g(0) = y0
  30. For i = 0 To n - 1
  31. k1 = h * f(x(i), g(i))
  32. k2 = h * f(x(i) + h / 2, g(i) + k1 / 2)
  33. k3 = h * f(x(i) + h / 2, g(i) + k2 / 2)
  34. k4 = h * f(x(i) + h, g(i) + k3)
  35. k = (k1 + 2 * k2 + 2 * k3 + k4) / 6
  36. g(i + 1) = g(i) + k
  37. MSFlexGrid1.TextMatrix(i + 2, 2) = Str(g(i + 1))
  38. MSFlexGrid1.TextMatrix(1, 2) = Str(g(0))
  39. Next i
  40. End Sub
  41. Private Sub obshee()
  42. ReDim t(n)
  43. c = y0 / x0 + Log(x0)
  44. For i = 0 To n
  45. t(0) = y0
  46. x(i) = x0 + h * i
  47. t(i) = v(x(i))
  48. MSFlexGrid1.TextMatrix(i + 1, 3) = Str(t(i))
  49. Next i
  50. End Sub
  51.  
  52. Private Sub Command1_Click()
  53. x0 = Val(Text1.Text)
  54. xk = Val(Text2.Text)
  55. h = Val(Text3.Text)
  56. y0 = Val(Text4.Text)
  57. n = (xk - x0) / h
  58. MSFlexGrid1.Rows = n + 2
  59. MSFlexGrid1.Cols = 4
  60. MSFlexGrid1.TextMatrix(0, 0) = "x"
  61. MSFlexGrid1.TextMatrix(0, 1) = "EilerMod"
  62. MSFlexGrid1.TextMatrix(0, 2) = "Рунге-Кутт"
  63. MSFlexGrid1.TextMatrix(0, 3) = "obshee"
  64. Label5.Caption = Str(x0)
  65. Label6.Caption = Str(xk)
  66. EilerMod
  67. Rynge_kytt
  68. obshee
  69. max = y0
  70. min = y0
  71. For i = 0 To n
  72. If y(i) > max Then
  73. max = y(i)
  74. End If
  75. If y(i) < min Then
  76. min = y(i)
  77. End If
  78. If g(i) > max Then
  79. max = g(i)
  80. End If
  81. If g(i) < min Then
  82. min = g(i)
  83. End If
  84. If t(i) > max Then
  85. max = t(i)
  86. End If
  87. If t(i) < min Then
  88. min = t(i)
  89. End If
  90. Next i
  91. Label7.Caption = Str(min)
  92. Label8.Caption = Str(max)
  93. kx = (Picture1.Width - 1095) / (xk - x0)
  94. ky = (Picture1.Height - 1320) / (max - min)
  95. Picture1.Cls
  96. For i = 0 To n - 1
  97. X1 = 1320 + Round(kx * (x(i - 1) - x0))
  98. X2 = 1320 + Round(kx * (x(i) - x0))
  99. Y1 = 6255 + Round(ky * (y(i - 1) - min))
  100. Y2 = 6255 + Round(ky * (y(i) - min))
  101. Picture1.Line (X1, Y1)-(X2, Y2), RGB(100, 200, 200)
  102. X1 = 1320 + Round(kx * (x(i - 1) - x0))
  103. X2 = 1320 + Round(kx * (x(i) - x0))
  104. Y1 = 6255 + Round(ky * (g(i - 1) - min))
  105. Y2 = 6255 + Round(ky * (g(i) - min))
  106. Picture1.Line (X1, Y1)-(X2, Y2), RGB(400, 300, 300)
  107. X1 = 1320 + Round(kx * (x(i - 1) - x0))
  108. X2 = 1320 + Round(kx * (x(i) - x0))
  109. Y1 = 6255 + Round(ky * (t(i - 1) - min))
  110. Y2 = 6255 + Round(ky * (t(i) - min))
  111. Picture1.Line (X1, Y1)-(X2, Y2), RGB(500, 100, 100)
  112. Next i
  113. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы