Курсовая работа: Деякі скінченно-різнецеві методи розвязування звичайних диференціальних рівнянь

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

К-во Просмотров: 311
Бесплатно скачать Курсовая работа: Деякі скінченно-різнецеві методи розвязування звичайних диференціальних рівнянь