Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

6.5. Метод Рунге-Кутты-Мерсона

Мерсон предложил модификацию метода Рунге-Кутты четвертого порядка, позволяющую оценивать погрешность на каждом шаге и принимать решение об изменении шага. Схему Мерсона [37] с помощью эквивалентных преобразований приведем к виду, удобному для программирования,

где

Схема Мерсона требует на каждом шаге вычислять правую часть ОДУ в пяти точках, но за счет только одного дополнительного коэффициента к, по сравнению с классической схемой Рунге-Кутты на каждом шаге можно определить погрешность решения Я по формуле

Для автоматического выбора шага интегрирования рекомендуется следующий критерий. Если абсолютное значение величины Я, вычисленное по формуле (6.23), окажется больше допустимой заданной погрешности

то шаг уменьшается в два раза и вычисления по схеме (6.22) повторяются с точки При выполнении условия

можно удвоить.

Автоматический выбор шага позволяет значительно сократить время решения ОДУ. Схема (6.22) обобщается на системы ОДУ аналогично классической схеме Рунге-Кутты.

При автоматическом выборе шага интегрирования иногда возникает необходимость вывода (использования) результатов только в фиксированных точках. Такая возможность реализована в программах 6.5.

В основном блоке программ 6.5 в диалоговом режиме задаются значения следующих переменных: интервал изменения аргумента шаг, с которым будут выдаваться результаты; относительная погрешность попадания аргумента в точку, предписанную шагом величина, на порядок большая максимально допустимой относительной погрешности решений; начальный пробный шаг; начальные условия; параметр, входящий в правые части ОДУ. Если шаги и выбрать кратными с коэффициентом, являющимся целой степенью 2, то значение переменной можно взять нулевым. После диалога в цикле по переменной X осуществляется обращение к подпрограмме метода. Если в процессе автоматического выбора шага интегрирования текущее значение аргумента выходит за предел, обусловленный шагом то изменением знака и величины шага процесс возвращается в требуемую точку. Модуль переменной определяет расстояние между очередной фиксированной точкой, где необходимо выводить результаты, и текущим аргументом.

Метод Рунге-Кутты-Мерсона оформлен в виде подпрограммы на всех используемых языках. В строках 100— 130 программы расположены операторы для определения коэффициентов для каждого уравнения системы ОДУ и подготовки вторых аргументов для определения коэффициентов Так как коэффициенты не используются непосредственно в схеме (6.22)

и в формуле для погрешности, то они не запоминаются в отдельном массиве, а сразу применяются для формирования аргументов для Коэффициенты и аргументы для вычисления определяются с помощью операторов в строках 160-210. После нахождения коэффициентов коэффициенты больше не потребуются для вычислений, поэтому для экономии памяти при размещении использован массив

С помощью цикла в строках 230-260 вычисляются правые части схемы (6.22) и выбирается наибольшая по модулю правая часть погрешности (6.23). Путем деления абсолютной погрешности на значение искомых решений в случае отличия последних от нуля находится относительная погрешность. Так как коэффициенты используются только в теле цикла, то их значения присваиваются простой переменной А. Чтобы при вычислении погрешности не делить правую часть формулы (6.23) на 10, достаточно задать значение переменной на порядок больше требуемой точности.

Условия (6.24) и (6.25) проверяются с помощью операторов в строках 270 и 280.

Правые части системы ОДУ вычисляются в подпрограмме, расположенной в строках 300-390.

В программах метод оформлен в виде подпрограмм с именем имеющих один дополнительный формальный параметр по сравнению с подпрограммами для метода Эйлера С помощью параметра в подпрограммы передается максимально допустимая относительная погрешность решения, умноженная на 10.

В программе использована программа-функция из системной библиотеки Фортрана.

С помощью программ 6.5 можно исследовать процессы установления колебаний для различных типов автоколебательных систем, задавая разные значения безразмерного параметра [57]. Отладку программ рекомендуется проводить при значении уравнение (6.20) при этом переходит в простое уравнение решениями которого в зависимости от начальных условий являются тригонометрические функции или их линейные комбинации.

(см. скан)

(см. скан)

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление