Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы вычислений.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
977.41 Кб
Скачать

Схемы Рунге-Кутта

Семейство схем Рунге-Кутта основано на аппроксимации неизвестных аргументов y(tn) в правых частях дифференциальных уравнений f(t,y).

Р ассмотрим идею этих методов на примере алгоритма 2-го порядка. Выпишем точную формулу интегрирования ОДУ на n-м шаге численного решения:

В формуле

не знаем, чему равно yn+1/2. Возьмем его из формулы явного алгоритма Эйлера:

и подставим в основную формулу интегрирования шага ОДУ. В результате получим следующий алгоритм реализации шага:

где

В зависимости от выбора метода интегрирования ОДУ на элементарном шаге и конкретной формы аппроксимации y (t) в правой части ОДУ, получаются алгоритмы различной точности и быстродействия. Наиболее популярен алгоритм Рунге-Кутта четвертого порядка, описанный в большинстве книг по методам вычислений. Он обеспечивает малую погрешность для широкого класса систем ОДУ за исключением жестких систем и, при этом, довольно экономичен (на каждом шаге интегрирования требуется вычисление 4-х значений функции f):

Если по различным причинам время расчетов становится критичным или точность неудовлетворительной, стоит попробовать вместо рассмотренного алгоритма Рунге-Кутта с фиксированным шагом другие методы. 

Например, если известно, что решение на рассматриваемом интервале меняется слабо, либо существуют участки медленных и быстрых его изменений, Метод Рунге-Кутта с переменным шагом основан на разбиении интервала не на равномерные шаги, а более оптимальным способом.

Там, где решение меняется слабо, шаги выбираются более редкими, а в областях его сильных изменений - частыми. Это очень просто осуществить, т.к. алгоритм Рунге-Кутта является одношаговым и подразумевает простой пересчет при любом значении шага hn искомого y (tn+hn) через y (tn).

Таким образом, легко обобщить алгоритм на адаптированный вариант, с выбором на каждом шаге своего hn в зависимости от локальной динамики решения на предыдущих шагах. 

В результате применения адаптированного алгоритма, для достижения одинаковой точности может потребоваться существенно меньшее число шагов, чем для стандартного алгоритма Рунге-Кутта с фиксированным шагом. 

Система n дифференциальных уравнений

При помощи Mathcad можно решать системы N>=1 ОДУ первого порядка, если они записаны в стандартной форме Коши y'(t)=f(y(t),t). 

В Mathcad имеется несколько встроенных функций, которые позволяют решать задачу Коши различными численными методами. Для нежёстких систем ОДУ применяются следующие функции:

  • rkfixed(y0,t0,t1,M,D) –метод Рунге-Кутты с фиксированным шагом;

  • Rkadapt(y0,t0,t1,M,D)- метод Рунге-Кутты с переменным шагом;

  • Bulstoer(y0,t0,t1,M,D)- метод Булирша-Штера;

    • y0 –вектор начальных знаний в точке t0 размера Nx1 ;

    • t0 –начальная точка расчёта;

    • t1-конечная точка расчёта;

    • M- число шагов, на которых численный метод находит решение;

    • D –векторная функция размера Nx1 двух аргументов –скалярного t и векторного y. При этом y- искомая векторная функция аргумента t того же размера Nx1.

Примечание:

Регистр первой буквы в методе актуален.

Каждая из приведённых функций выдаёт решение в виде матрицы размера (M+1)x(N+1). В её левом столбце находятся значение аргумента t, делящие интервал на равномерные шаги, а в остальных N – столбцах – значения искомых функций .

Пример:

Решим систему ОДУ осциллятора с затуханием с помощью функции

rkfixed.

Примечание:

Скобки в графике устанавливаются с помощью комбинации клавиш <Ctrl>+<6>.

Результат расчёта представлен в виде матрицы и в виде графика.

Чтобы использовать другой численный алгоритм, достаточно поменять имя функции в последней строке на другую.

Пример:

Решение задачи Коши для обыкновенного дифференциального уравнения первого порядка