. Разработка программы поиска решения системы дифференциальных уравнений двумя методами: Рунге-Кутта и Рунге-Кутта-Мерсона (стр. 1 из 4)
Разработка программы поиска решения системы дифференциальных уравнений двумя методами: Рунге-Кутта и Рунге-Кутта-Мерсона (стр. 1 из 4)

Разработка программы поиска решения системы дифференциальных уравнений двумя методами: Рунге-Кутта и Рунге-Кутта-Мерсона (стр. 1 из 4)

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

В данной пояснительной записке проводится описание последовательности шагов по составлению программы на алгоритмическом языке Turbo Pascal. Рассматриваются вопросы математической формулировки и алгоритмизации задачи, разработки блок-схемы алгоритма её решения, составления исходной Pascal-программы и реализации вычислений по составленной программе.

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

В пояснительной записке приводится также сравнения точности вычислений корней системы уравнений использованными методами.

1. Постановка задачи

Ставится задача составить программу решения системы дифференциальных уравнений:

Требуется найти решение системы дифференциальных уравнений (1) методом Рунге-Кутта и методом Рунге-Кутта-Мерсона. Выбор метода решения посредствам меню, при помощи клавиш управления курсором.

Таким образом, программа должна обеспечивать возможность:

выбора пользователем численного метода поиска решения системы дифференциальных уравнений;

предоставить пользователю возможность получить краткую справку о программе;

вывода результатов вычисления на дисплей в удобном для восприятия виде.

В результате сформулируем следующую задачу по созданию программы:

вид системы дифференциальных уравнений должен задаваться в подпрограмме – процедуре;

вид правой части уравнений должен задаваться в подпрограмме – функции;

программа после загрузки должна выводить на дисплей исходное окно-заставку, в которой отображаются общие сведения о статусе программы и её авторе;

после выполнения указанной в строке подсказки процедуры перехода должно выводиться вертикальное меню с пунктами: «Справка», «Метод Рунге-Кутта», «Метод Рунге-Кутта-Мерсона» и «Выход»

при выборе в меню пункта «Справка» должна выводиться краткая справка о назначении программы;

после выбора в меню варианта численного метода должно открываться отдельное окно, в котором будут вводиться начальные условия и выводиться результат поиска выбранным методом;

при выборе пункта меню «Выход» программы должна завершать работу.

2. Математическая формулировка задачи

Задача Коши заключается в решении систем обыкновенных дифференциальных уравнений (1) первого порядка, представляемых в виде:

Где j=1

Решение системы (1.1) при заданных начальных условиях x=x0, y1(x0)=y10,…,y2(x0)=y20, yN(x0)=yN0 сводиться к нахождению зависимостей (интегральных кривых) y1(x),…,y2(x), yN(x), проходящих через точки (x0,y10), (x0,y20),…, (x0,yN0). Задача Коши сводиться к интегрированию дифференциальных уравнений. Порядок метода численного интегрирования при этом определяется и порядок метода решения (1).

2.1 Метод Рунге-Кутта

Этот метод является наиболее распространенным методом решения систем (1.1) при шаге h=const. Его достоинством является высокая точность-погрешность

При переходе от одной формулы к другой задаются или вычисляются соответствующие значения x и Yj и находятся по подпрограмме значения функции Fj(x,Yj).

2.2 Метод Рунге-Кутта-Мерсона

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

Находим (в последнем цикле) значение (12)

Проверяем выполнения условий

Если условие (14) не выполняется, то делим шаг h на 2 и повторяем вычисления. Если это условие выполняется и выполняется условие (15), значение xi+1=xi+h и Yj(i+1), то считаем, что решение системы дифференциальных уравнений найдено с заданной точностью. Если условие (15) не выполняется , шаг h увеличивается вдвое и вычисления повторяются.

3. Алгоритмизация задачи

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

Алгоритм работы головной программы следующий:

Скрыть курсор с использованием подпрограммы - процедуры скрытия курсора и вывести в специальном окне заставку программы, содержащую сведения о назначении программы, исполнителе и руководителе курсовой работы, а также подсказку для пользователя о последующих действиях, с использованием подпрограммы - процедуры заставки.

Запустить подпрограмму-процедуру вертикального меню при нажатии любой клавиши с использованием подпрограмм-процедур построения окна, вывода рамки окна и скрытия курсора.

Запустить подпрограмму-процедуру справки и вывести в специальном окне справочные сведения о работе с программой при выборе пункта меню «Справка» с использованием строки-подсказки о возврате в меню.

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

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

Завершить работу программы при выборе пункта меню «Выход».

Алгоритм поиска решения системы уравнения методом Рунге-Кутта в подпрограмме-процедуре runkut включает следующие шаги:

Создать окно для ввода исходных данных и вывода результатов вычисления.

Восстановить отображение курсора нормального размера соответствующей подпрограммой - процедурой.

Задать начальный шаг-h и начальные значение xо,y10,…,yN0 .

В подпрограмме-функции задаём вид правой части уравнений.

В подпрограмме-процедуре задаём вид системы дифференциальных уравнений.

Организовать цикл для поиска коэффициентов погрешности по формулам (2-5)

По формуле (6) найти решение системы дифференциальных уравнений.

Вывести результаты вычислений в том же окне.

Вывести в окне запрос о продолжении вычислений с новыми исходными данными.

📎📎📎📎📎📎📎📎📎📎