- •Часть 4
- •Введение
- •Лекция 1. Система математических расчетов MathCad и особенности ее применения
- •1. Общая характеристика системы MathCad
- •2. Информационная среда, предоставляемая в распоряжение пользователя
- •3. Входной язык, встроенные функции и модули системы MathCad
- •3.1. Входной язык системы MathCad
- •3.2. Основные модули системы MathCad
- •Лабораторное занятие 1: Вычисления и типы данных
- •1. Вычисление значений арифметических и алгебраических выражений
- •2. Переменные, функции и операторы
- •2.1. Переменные
- •2.2. Функции
- •2.3. Операторы
- •3. Данные в MathCad
- •3.1 Типы данных
- •3.2. Размерные переменные
- •4. Массивы
- •4.1. Создание массивов
- •4.2. Ранжированные переменные
- •Лабораторное занятие 2. Создание графиков
- •1. Двумерная графика
- •1.4. Полярный график
- •1.5. Построение нескольких рядов данных
- •1.6. Форматирование осей
- •1.7. Форматирование рядов данных
- •1.8. Трассировка и увеличение графиков
- •2. Трехмерная графика
- •2.1 Создание трехмерной графики
- •2.2. Форматирование трехмерных графиков
- •Лабораторное занятие 3. Символьные вычисления
- •1. Символьная алгебра
- •1.1.Разложение выражений (Expand)
- •1.2. Упрощение выражений (Simplify)
- •1.3. Разложение на множители (Factor)
- •1.4. Приведение подобных слагаемых
- •1.5. Определение коэффициентов полинома (Polynomial Coefficients)
- •1.6. Разложение на элементарные дроби
- •1.7. Подстановка переменной (Substitute)
- •1.8. Решение алгебраических уравнений (solve)
- •1.9. Суммы и произведения
- •2. Символьное решение задач математического анализа
- •2.1. Дифференцирование (Differentiate) и интегрирование (Integrate)
- •2.2. Разложение в ряд (Expand to Series)
- •2.3. Интегральные преобразования
- •3. Дополнительные возможности символьного процессора
- •3.1. Применение функций пользователя
- •3.2. Получение численного значения выражений
- •3.3. Последовательности символьных команд
- •Лабораторное занятие 4. Численные методы
- •1. Интегрирование и дифференцирование
- •1.1. Интегрирование
- •1.2. Дифференцирование
- •2. Алгебраические уравнения и оптимизация
- •2.1. Одно уравнение с одним неизвестным
- •2.2. Корни полинома
- •2.3. Системы уравнений
- •2.4. Символьное решение уравнений
- •3. Поиск экстремума функции
- •3.1. Экстремум функции одной переменной
- •3.2. Условный экстремум
- •3.3. Экстремум функции многих переменных
- •3.4. Линейное программирование
- •Лабораторное занятие 5. Матричные вычисления
- •Простейшие операции с матрицами
- •Транспонирование
- •Сложение
- •1.3. Умножение
- •1.4. Определитель квадратной матрицы
- •1.5. Модуль вектора
- •1.6. Скалярное произведение векторов
- •1.7. Векторное произведение
- •1.8. Сумма элементов вектора и след матрицы
- •1.9. Обратная матрица
- •1.10. Возведение матрицы в степень
- •1.11. Векторизация массивов
- •2.1.2. Создание матриц специального вида
- •2.2. Слияние и разбиение матриц
- •2.2.1. Выделение части матрицы
- •2.2.2. Слияние матриц
- •2.3. Сортировка матриц
- •2.4. Вывод размера матриц
- •2.5. Норма квадратной матрицы
- •2.6. Число обусловленности квадратной матрицы
- •2.7. Ранг матрицы
- •3. Система линейных уравнений
- •4. Собственные векторы и собственные значения матриц
- •Лабораторное занятие 6. Обыкновенные дифференциальные уравнения
- •1. Оду первого порядка
- •1.1. Вычислительный блок Given/Odesolve
- •1.2. Встроенные функции rkfixed, Rkadapt, Bulstoer
- •2. Оду высшего порядка
- •3. Системы оду первого порядка
- •3.1. Встроенные функции для решения системы оду
- •3.2. Решение системы оду в одной точке
- •Приложения Приложение 1. Встроенные функции и операторы
- •Встроенные функции
- •Приложение 2. Сообщения об ошибках
- •Оглавление
3. Системы оду первого порядка
MathCAD требует, чтобы система дифференциальных уравнений была представлена в стандартной форме:
y0'(t)=f0(y0(t),y1(t),…, yN-1(t),t),
y1'(t)= f0(y0(t),y1(t),…, yN-1(t),t), (1)
…
yN-1'(t)= fN-1(y0(t),y1(t),…, yN-1(t),t)
Задание системы (1) эквивалентно следующему векторному представлению:
Y'(t)=F(Y(t),t), (2)
где Y и Y' – соответствующие неизвестные векторные функции переменной t размера N×1, а F – векторная функция того же размера и (N+1) количества переменных (N компонент вектора и, возможно, t). Именно векторное представление (2) используется в среде MathCAD для ввода системы ОДУ.
Для того чтобы определить задачу Коши для системы ОДУ, следует определить еще N начальных условий, задающих значение каждой из функций yi(t0) в начальной точке интегрирования системы t0. В векторной форме они могут быть записаны в виде:
Y(t0)=B, (3)
где B – вектор начальных условий размера N×1, составленный из yi(t0).
Здесь задача сформулирована для систем ОДУ первого порядка. Если в систему входят уравнения высших порядков, то ее можно свести к системе большего числа уравнений первого порядка.
3.1. Встроенные функции для решения системы оду
В MathCAD имеются три встроенные функции, которые позволяют решать поставленную в форме (2-3) задачу Коши различными численными методами.
-
rkfixed(y0,t0,t1,M,D) –метод Рунге-Кутты с фиксированным шагом.
-
Rkadapt(y0,t0,t1,M,D) - метод Рунге-Кутты с переменным шагом.
-
Bulstoer(y0,t0,t1,M,D) – метод Булирша-Штера.
В этих функциях: y0 – вектор начальных значений в точке t0 размера N×1; t0 – начальная точка расчета; t1 – конечная точка расчета; M – число шагов, на которых численный метод находит решение; D – векторная функция размера N×1 двух аргументов – скалярного t и векторного y. При этом y – искомая векторная функция аргумента t того же размера N×1.
Каждая из приведенных функций выдает решение в виде матрицы размера (M+1)×(N+1). В ее левом столбце находятся значения аргумента t, а в остальных N столбцах - значения искомых функций y0(t), y1(t),…, yN-1(t), рассчитанные для этих значений аргумента. Всего в этой матрице M+1 строка.
В подавляющем большинстве случаев достаточно использовать первую функцию rkfixed.
Задание 4. Реализуйте следующий пример, содержащий решение системы ОДУ модели осциллятора с затуханием. Проанализируйте результаты решения.
Функция D(t,y), определяющая систему ОДУ, имеет ряд особенностей:
-
Функция D должна быть обязательно функцией двух аргументов.
-
Второй ее аргумент должен быть вектором того же размера, что и сама функция D.
Точно такой же размер должен быть и у вектора начальных значений y0.
Решение системы осуществлено на промежутке (0, 50). Матрица решений имеет размер (M+1)×(N+1), т.е. 101×3. Просмотреть все компоненты матрицы u можно с помощью вертикальной полосы прокрутки, которая появляется при щелчке мышкой по таблице решений. Так расчетное значение первой искомой переменной y0 на 12 шаге u12,1=0.07. Для вывода элементов решения в последней точке интервала используется выражение типа uM,1=7.523·10-3.
Чтобы построить график решения, надо отложить соответствующие компоненты решения по координатным осям: значение аргумента u<0> - вдоль оси X, а u<1> и u<2> - вдоль оси Y (Чтобы разместить на рисунке два графика параметры u<1> и u<2> для оси Y надо вводить через запятую).
Решение ОДУ часто удобнее изображать в фазовом пространстве, по каждой оси которого откладываются значения каждой из найденных функций. При этом аргумент входит в них лишь параметрически. В случае двух ОДУ такой график – фазовый портрет системы – является кривой на фазовой плоскости и поэтому особенно нагляден.
Задание 5. По условиям задание 4 постройте фазовый портрет. Постройте второй фазовый портрет при M= 200. Проанализируйте результаты решения.
В общим случае, если система состоит из N ОДУ, то фазовое пространство является N-мерным. При N>3 наглядность теряется, и для визуализации фазового портрета приходится строить его различные проекции.
Все численные методы решения ОДУ основаны на аппроксимации дифференциальных уравнений разностными аналогами. В зависимости от конкретной формы аппроксимации, получаются алгоритмы различной точности и быстродействия. В MathCAD использован наиболее популярный алгоритм Рунге-Кутты четвертого порядка, описанный в большинстве книг по методам вычислений. Он обеспечивает малую погрешность для широкого класса систем ОДУ за исключением жестких систем. Поэтому в большинстве случаев применяют функцию rkfixed. Если по различным причинам время расчетов становится критичным или точность неудовлетворительна, стоит попробовать применить другие встроенные функции.
Функция Rkadapt может быть полезна в случае, когда известно, что решение на рассматриваемом интервале меняется слабо, либо существуют участки медленных и быстрых изменений. Метод Рунге-Кутты с переменным шагом разбивает интервал не на равномерные шаги, а более оптимальным способом. Там, где решение меняется слабо, шаги выбираются более редкими, а в областях его сильных изменений – частыми. В этом случае для достижения одинаковой точности требуется меньшее число шагов. Метод Булирша-Штера (Bulstoer) часто оказывается более эффективным для поиска гладких решений.