Решени ДУ 2-го порядка методом Рунге-Кутта - VB

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

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

Нужно написать программу для решения уравнения y''-5y'+6y=e^x y(0)=0 y'(0)=0 [0;0.2] h=0.02 Если кто-то сможет помочь буду благодарен. Или хотя бы какой то пример решения. А то не имею не малейшего понятия как решать этим методом.

Решение задачи: «Решени ДУ 2-го порядка методом Рунге-Кутта»

textual
Листинг программы
Private Sub cmdStart_Click()
  Dim dX As Double
  Dim dY As Double
  Dim dZ As Double
  Dim dX0 As Double
  Dim dX1 As Double
  Dim dY0 As Double
  Dim dY1 As Double
  Dim dZ0 As Double
  Dim dZ1 As Double
  Dim dStep As Double
  Dim dK1 As Double
  Dim dK2 As Double
  Dim dK3 As Double
  Dim dK4 As Double
  Dim dU1 As Double
  Dim dU2 As Double
  Dim dU3 As Double
  Dim dU4 As Double
  '
  ' Так, задаём начальные условия:
  dX0 = 0 ' сами написали [0; 0.2]
  dX1 = 0.2
  dY0 = 0 ' y(0)=0
  dZ0 = 0 ' y'(0)=0 - помните y'=z
  dStep = 0.02 ' это ведь шаг h=0.02 насколько я понимаю
  dY = dY0
  dZ = dZ0
  '
  ' ПОСЧИТАЕМ НЕСОСТОЯТЕЛЬНЫЕ КРОТЫ!
  For dX = dX0 To dX1 Step dStep
    dK1 = dStep * dF1(dX, dY, dZ)
    dU1 = dStep * dF2(dX, dY, dZ)
    dK2 = dStep * dF1(dX + dStep / 2, dY + dU1 / 2, dZ + dK1 / 2)
    dU2 = dStep * dF2(dX + dStep / 2, dY + dU1 / 2, dZ + dK1 / 2)
    dK3 = dStep * dF1(dX + dStep / 2, dY + dU2 / 2, dZ + dK2 / 2)
    dU3 = dStep * dF2(dX + dStep / 2, dY + dU2 / 2, dZ + dK2 / 2)
    dK4 = dStep * dF1(dX + dStep, dY + dU3, dZ + dK3)
    dU4 = dStep * dF2(dX + dStep, dY + dU3, dZ + dK3)
    dY1 = dY + (dU1 + 2 * dU2 + 2 * dU3 + dU4) / 6
    dZ1 = dZ + (dK1 + 2 * dK2 + 2 * dK3 + dK4) / 6
    MsgBox "X =" + Format$(dX, "# ### ##0.0000000") + "   Y= " + Format$(dY, "# ### ##0.0000000") + "   Z(Y') =" + Format$(dZ, "# ### ##0.0000000")
    ' Переприсваиваем Y и Z для следующего шага
    dY = dY1
    dZ = dZ1
  Next dX
End Sub
 
Function dF1(X As Double, Y As Double, Z As Double) As Double
  dF1 = Exp(X) - 6 * Y + 5 * Z ' z'=e^x-6y+5z = f1(x,y,z)
End Function
 
Function dF2(X As Double, Y As Double, Z As Double) As Double
  dF2 = Z ' y'=z = f2(x,y,z)
End Function

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


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

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

5   голосов , оценка 4.8 из 5
Похожие ответы