Решени ДУ 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д