Function f1(x, y, z)f1 = -2 * y * x + z End Function
Function f2(x, y, z) f2 = 3 * y - 2 * z End Function
Sub metod_dv_Eilera() x = 0 xk = 1 y = 5 z = 10 h = 0.1 i = 2 Do y = y + h * f1(x, y, z) z = z + h * f2(x, y, z) x = x + h With Worksheets("Лист2") .Cells(i, 1).Value = x .Cells(i, 2).Value = y .Cells(i, 3).Value = z End With i = i + 1 Loop While x < xk End Sub
Sub metod_dv_Runge_Cutta() x = 0 xk = 1 y = 5 z = 10 h = 0.1 i = 2 Do k0 = f1(x, y, z) * h k1 = f1(x + h / 2, y + k0 / 2, z + m0 / 2) * h k2 = f1(x + h / 2, y + k1 / 2, z + m1 / 2) * h k3 = f1(x + h, y + k2, z + m2) * h y = y + (k0 + 2 * k1 + 2 * k2 + k3) / 6
m0 = f2(x, y, z) * h m1 = f2(x + h / 2, y + k0 / 2, z + m0 / 2) * h m2 = f2(x + h / 2, y + k1 / 2, z + m1 / 2) * h m3 = f2(x + h, y + k2, z + m2) * h z = z + (m0 + 2 * m1 + 2 * m2 + m3) / 6
x = x + h With Worksheets("Лист2") .Cells(i, 5).Value = x .Cells(i, 6).Value = y .Cells(i, 7).Value = z End With i = i + 1 Loop While x < xk End Sub
Для запуска программ нажать на кнопку или на Run. Полученный результат находится на Листе 1. Результаты 1)
2)
Вывод: Оба метода являются одношаговыми. Метод Эйлера имеет первый порядок точности. Он используется сравнительно редко. Метод Рунге-Кутта является наиболее распространенным методом решения обыкновенных дифференциальных уравнений. Сравним время решения дифференциального уравнения по методу Эйлера и Рунге-Кутта. Если мы уменьшим шаг h в два раза, то т.к. метод Рунге-Кутта имеет порядок точности , погрешность уменьшится примерно в 16 раз. Так как на каждом шаге правая часть уравнения вычисляется 4 раза, то количество вычислений увеличится в 8 раз. Чтобы уменьшить погрешность вычисления по методу Эйлера в 16 раз, надо шаг уменьшить в 16 раз, а значит, в столько же раз увеличится количество вычислений правой части. Значит, для метода Рунге-Кутта потребуется в два раза меньше времени вычисления. Кроме того, при вычислении с шагом h точность решения методом Рунге-Кутта была выше. При уменьшении шага в большее число раз получим еще больший выигрыш во времени вычислений. Особенность одношаговых методов в том, что для получения решения в каждом новом расчетном узле достаточно иметь значения сеточной функции лишь в предыдущем узле. Это позволяет непосредственно начать счет при i=0 по известным начальным значениям. Это допускает изменение шага в любой точке в процессе расчета. Недостатком одношаговых методов является трудность выбора шага, т.к. трудно вычислить погрешность на каждом шаге. Приведем формулы Рунге-Кутта для системы двух уравнений: c начальными условиями: при Формулы имеют вид:
Аналогично можно записать формулы Рунге-Кутта для систем из трех и более уравнений. Алгоритм решения аналогичен алгоритму решения системы уравнений методом Эйлера.
Список литературы
1. Лекции по численным методам доцента кафедры химической кибернетики КНИТУ Кошкиной Л.Ю. 2. Кошкина Л.Ю. и др. Вычислительная математика в среде Excel: Методические указания. Часть 2. / Казан. гос. технол. ун-т; Казань, 2003, с. 72 3. Васильков Ю.В., Василькова Н.Н. Компьютерные технологии вычислений в математическом моделировании: Учебное пособие. – М.: Финансы и статистика, 2001.-256 с:ил. 4. Рено Н.Н. Численные методы. Учебное пособие / Казан. гос. технол. университет; Казань,2007, 112 с. 5. Турчак Л.И. Основы численных методов. - М.: Наука, 1987. – 318 с. 6. Дьяконов В.П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ: Справочник. – М.: Наука.1989. –240 с. 7. Назаров С.В., Мельников П.П. Программирование на MS Visual Basic: Учебное пособие / Под ред. С.В. Назарова. – М.: Финансы и статистика, 2001. – 320 с.: ил.
|