Курсовая работа: Деякі скінченно-різнецеві методи розвязування звичайних диференціальних рівнянь
TMyRK RK4 = new TMyRK(2);
double[] Y0 = {0, 1}; // задаємо початкові умови y(0)=0, y'(0)=1
RK4.SetInit(0, Y0);
while (RK4.GetCurrent() < 10) // розв’язуєм до 10
{
Console.WriteLine("{0}\t{1}\t{2}", RK4.GetCurrent(), RK4.Y[0], RK4.Y[1]); // вивести t, y, y'
RK4.NextStep(0.01); // розв’язати на наступному кроці, крок інтегрування dt=0.01
}
}
}
}
8. Програма Beeman
У програмі Вееman моделюється осцилятор Морза з допомогою алгоритму Бімана. Оскільки цей алгоритм не самостартуючий, то для всіх - числових значень х(, і використовується швидкісна форма алгоритму Верле.
PROGRAM Beeman І моделювання осцилятора Морза
CALL initialfx, v, aold, dt, dt2, nmax)
CALL energy(x, v, ecum, e2cum) 1 значення початкової енергії
CALL Verleg x, v, a, aold, dt, dt2) CALL energy{ x, v, ecum, e2cum) LET n = 1
DO whiie n < nmax
LET n = n + 1 1 число кроку
CALL Bceman{x, v, a, aold, dl, dl2)
І образування повної знергії після кожного кроку за часом CALL energY(x, v, ecum, e2cum) LOOP
CALL output{ ecum, e2cum, n) END
SUB initial( x, v, aold, dt, dt2, nmax) DECLARE DEF f LET х = 2 LET v = 0 LET aold = f(x)
INPUT prompt "крок по часу (c) = ": dt LET dt2 = dt" dt
INPUT prompt "тривалість = ": tmax LET nmax = tmax/dt END SUB
SUB Ver!et( x, v, a, aold, dt, dt2) DECLARE DEF f
LET x = x + v*dt + 0.5*ao!d*dt2 LET a = f(x)
LET v = v + 0.5"{a + ao!d)*dt END SUB
SUB Beeman(x, v, a, aold, dt, dt2) DECLARE DEF f