Автор: Пользователь скрыл имя, 04 Мая 2012 в 22:25, контрольная работа
Необходимо решить с заданной степенью точности задачу Коши для системы дифференциальных уравнений на заданном интервале [a,b]. Добиться погрешности на втором конце не более 0,0001. Результат получить в виде таблицы значений приближенного и точного решений в точках заданного интервала. Построить графики полученных решений и сравнить их с точным решением.
Для разработки программного продукта, была выбрана среда Borland C++ Builder. Программы, написанные на языке С++, имеют хорошую скорость выполнения; при этом они более наглядны и просты в программировании. Среда Borland C++ Builder является средством быстрой разработки windows-приложений, позволяющее создавать приложения на языке С++, используя среду разработки и библиотеку компонентов Delphi.
Готовая программа представляет собой исполняемый файл с именем “Project1.exe”, реализованный в виде Windows-приложения в среде Borland C++ Builder. После запуска программы на рабочем окне появляется рабочее окно с заголовком «Решение систем дифференциальных уравнений методом Адамса» (см. рис.2).
В активном окне можно выделить следующие области:
1) Область ввода исходных данных.
2) Область вывода результатов.
3) Поле отображения графиков полученных функций.
1) Область исходных данных содержит поля, в которые требуется ввести начальные данные: систему дифференциальных уравнений; интервал, на котором требуется найти решение заданной системы; допустимую погрешность; условия Коши в начальной точке заданного интервала; количество шагов “сетки” и шаг вывода полученных значений искомых функций в узлах сетки.
В поля ”du/dx= “ и “dv/dx= “ вводятся дифференциальные уравнения, содержащие символы, ‘u’, ‘v’ ‘x’, ‘e’, ’1’..’9’, ’+’, ’-‘, ‘*’, ‘/’, ‘^’, ‘(‘, ‘)’. Здесь: символы ‘u’ и ‘v’ представляют собой искомые функции, символ ‘e’ является основанием натурального логарифма, символ ‘^’ обозначает операцию возведения в степень. Использование других символов нежелательно, так как они будут проигнорированы программой.
Поля с заглавием «интервал [a;b]» содержат начальную и конечную точку промежутка, на котором будет найдено решение заданной системы.
В поле «количество шагов сетки» требуется ввести целое число, равное количеству точек по оси OX на заданном интервале, в которых ищем значения функций u(x) и v(x).
Поле «шаг вывода» содержит целое число, определяющее частоту вывода на экран результатов из множества результатов во всех узлах заданной сетки.
Поля под общим названием «начальные условия» содержат условия Коши – значения искомых функций в начале заданного интервала [a,b].
Для корректной работы программы все поля должны быть заполнены. При запуске программы все вышеперечисленные поля уже содержат стандартную информацию для теста программы, которую можно изменять.
Пользователю предоставляется возможность выбора режима программы. В программе есть метка – «Свой пример», первоначальное значение которой «ложь», предусмотрена для конкретного примера и проверки точности результатов. Данный режим позволяет вводить различные системы дифференциальных уравнений, отличных от стандартных тестовых, решением которых являются функции u(x)=2*x, v(x)=exp(x). Если метка поставлена, то после нажатия кнопки «Выполнить» будет решена задача Коши для заданного интервала, но заданная точность не будет достигнута.
2) Все результаты, полученные в ходе работы программы, отображаются в отдельном окне.
3) Полученное решение в виде графиков также отображаются.
В качестве тестовой задачи была решена задача Коши при помощи метода Адамса на интервале [2,4] с начальными условиями :
Результат решения:
x | u(x) | v(x) |
------------------------------
2,000 0,0000 1,0000
2,200 0,2291 0,8392
2,400 0,5654 0,7578
2,600 1,1287 0,7709
2,800 2,1564 0,9222
3,000 4,1430 1,3117
3,200 8,1573 2,1574
3,400 16,5907 3,9387
3,600 34,9732 7,7345
3,800 76,5247 16,0460
4,000 173,9215 34,8655
Предложенная задача Коши была также решена в математическом пакете “ Mathcad 11” двумя методами: методом Рунге-Кутта 5-го порядка и методом Рунге-Кутта с непостоянным шагом. Реализация решения системы дифференциальных уравнений в “Mathcad 11” и таблицы результатов приведены ниже:
Реализация решения задачи Коши методом Рунге-Кутта 5-го порядка:
Сравнивая полученные результаты с результатами работы программы “Project1.exe”, приходим к выводу, что метод Адамса достаточно эффективен при численном решении задачи Коши.
Система типа хищник-жертва. Модель Вольтерра.
1. Постановка задачи [1]. Рассмотрим динамику популяции двух видов, взаимодействующих между собой по типу хищник-жертва. Обозначим через u = u(x) и v = v(x) плотности популяций жертв и хищников в момент времени t. Предположим, что
• жертва может найти достаточно пищи для пропитания;
• при каждой встрече с хищником последний убивает жертву;
• норма рождаемости жертв , нормы естественной смертности жертв и хищников c являются постоянными, .
• число случаев, когда хищник убивает жертву, зависит от вероятности их встречи и, следовательно, пропорционально произведению uv ; в результате встреч с жертвами число хищников увеличивается.
При сделанных допущениях динамика популяции описывается следующей моделью
известной, как уравнения Лотки-Вольтерра (1925 г.). [8]
2. Безразмерная форма уравнений. Вводя безразмерные величины
преобразуем уравнения (1) к виду
Дополним их начальными условиями
Из вида уравнений (3.2) следует, что динамика популяции характеризуется только одним существенным положительным параметром σ (равным отношению прироста жертв к естественной смертности хищников).
Для решения этой задачи используем разработанный программный код. Получим значения функций в точках сетки. И исходя из решения системы (точка пересечения графиков функций), получаем значение параметра
σ ≈5 (см рис. 1).
10
Информация о работе Решение систем дифференциальных уравнений при помощи формулы Адамса