6.6 Решение дифференциальных уравнений
Задача Коши для дифференциального уравнения состоит в нахождении функции y(t), удовлетворяющей дифференциальному уравнениюn - гопорядка
y(n) = F(t,y,y',…,y(n-1))
и начальным условиям
y(t0) = u0, y'(t0) = u1,…, y(n-1)(t0) = un-1 приt = t0.
Самым простым случаем является дифференциальное уравнение 1- го порядка, разрешенное относительно производной. Оно имеет видy' = f(t,y).Если переменнаяyявляется вектором, то речь идет о системе дифференциальных уравнений. Дифференциальные уравнения и системы порядка2и выше обычно можно свести к системам уравнений1- го порядка, введя такое количество вспомогательных функций, которое соответствует порядку уравнения. Например, чтобы свести к системе уравнений1 - го порядка уравнениеy'' = F(t,y,y'), нужно использовать подстановку:y1 = y, y2 = y'.В результате получим систему дифференциальных уравнений
Для численного решения обыкновенных дифференциальных уравнений произвольного порядка и систем с начальными условиями, т. е. задачи Коши, в MATLAB имеютя необходимые решатели (солверы) –ode23,ode45,ode113,ode15s,ode23s,ode23t,ode23tb. Справку по ним можно получить с помощью командыdoc ode45. Солверы с суффиксомsпредназначены для решения так называемыхжестких систем. К ним относится уравнение Ван-дер-Поляy''-μ(1 - y2)y'+y = 0, решение которого с помощьюode15sприводится во встроенной вMATLABсправочной системеHelp(приложение 1, рис. П.4).
Для всех остальных систем наиболее употребительным является ode45, реализующий алгоритм Рунге-Кутта4 - 5порядков (разные порядки точности используются для контроля шага интегрирования).
Все вышеупомянутые солверы позволяют задать дополнительный параметр options, контролирующий вычислительный процесс. Пример контроля точности вычислений рассмотрен в разделе 6.4.
В самом простом случае синтаксис вызова перечисленных выше солверов
[t,Y]=solver('fun', [t0, tn], Y0).
Здесь приняты следующие обозначения:
solver– название соответствующего солвера;
'fun'– имя файл-функции, которая вычисляет вектор-столбец правых частей системы дифференциальных уравнений;
t– вектор-столбец, содержащий значения независимой переменной (обычно это значения времени);
Y– матрица значений неизвестных функций в соответствующие моменты времени;
[t0, tn]– вектор с начальным и конечным временем наблюдения;
Y0– скаляр или вектор-столбец, в котором задаются начальные условия.
Схема решения состоит из следующих этапов:
приведение дифференциального уравнения к системе дифференциальных уравнений первого порядка;
оформление в виде файл - функции правой части системы уравнений;
вызов подходящего солвера;
визуализация результата.
Пример:
Решить задачу Коши для дифференциального уравнения 2-го порядка
y''+4y'+3y = cost, y(0) = 1, y'(0) = 0.
Решение:
Выполнив подстановку y1 = y, y2 = y',получим систему дифференциальных уравнений
Теперь составим файл-функцию для вычисления правых частей системы дифференциальных уравнений. Она должна содержать два входных аргумента (переменную t, по которой производится дифференцирование и вектор, размер которого равен числу неизвестных функций системы) и один выходной аргумент (вектор правой части системы). Для нашего примера текст файл-функции будет таким:
functionF=osc(t,y)
F=[y(2);-4*y(2)-3*y(1)+cos(t)];
Для вычисления решения системы на интервале [0;15]используем солверode45. С учетом начальных условий обращение к функцииode45будет иметь такой вид:
>> [T,Y]=ode45('osc',[0,15],[1;0]);
В силу проделанных замен y1 = y, y2 = y',первый столбец матрицыY содержит как раз значения неизвестной функцииy(t),входящей в исходное дифференциальное уравнение, а второй столбец – значения ее производной.
Отобразим на рис. 6.5 график решения и график производной от этого решения (т. е. графики изменения координаты точки и ее скорости в зависимости от времени) с помощью команды
>> plot(T,Y(:,1),T,Y(:,2),'k--')
В разделе 7.14 найдено точное (аналитическое) решение
y = cost+sint - e -3t+e -t
данного дифференциального уравнения. Выведем на рис. 6.5 график точного решения в с маркерами виде кружков:
>> t=0:15;hold
>> y=cos(t)/10+sin(t)/5-7*exp(-3*t)/20+5*exp(-t)/4;
>> plot(t,y,'ko'), legend('y(t)','dy(t)/dt','analitic solution'), grid
Рис. 6.5
Как видно из рис. 6.5, график приближенного решения совпадает с графиком точного решения.
Приведенный здесь пример касается лишь задачи Коши для систем обыкновенных дифференциальных уравнений. Однако система MATLABпредлагает солверы для граничных задач, а также солверы для дифференциальных уравнений с частными производными.
Об этих солверах можно узнать во встроенной в пакет MATLABсправочной системеHelp(приложение 1, рис. П.5).
- Основы работы и программирования, компьютерная математика Учебный курс
- Isbn ооо «Харвест», 2008
- Предисловие
- Введение
- Глава 1 знакомство с matlab и простейшие вычисления
- 1.1. Рабочая средаMatlab
- 1.2. Арифметические вычисления
- 1.3. Вещественные числа
- 1.4. Форматы вывода результата вычислений
- 1.5 Комплексные числа
- 1.6 Векторы и матрицы
- 1.7 Встроенные функции. Функции, задаваемые пользователем
- 1.8 Сообщения об ошибках и их исправление
- 1.9 Просмотр и сохранение переменных
- 1.10 Матричные и поэлементные операции над векторами и матрицами
- 1.11 Решение систем линейных уравнений
- Вопросы для самопроверки
- Глава 2 работа с массивами
- 2.1 Создание векторов и матриц
- 2.2 Применение команд обработки данных к векторам и матрицам
- 2.3 Создание специальных матриц
- 2.4 Создание новых массивов на основе существующих
- 2.5 Вычисление собственных значений и собственных векторов. Решение типовых задач линейной алгебры
- Вопросы для самопроверки
- Глава 3 м-файлы
- 3.1 Файл-программы
- 3.2 Файл-функции
- Вопросы для самопроверки
- Глава 4 программирование
- 4.1 Операторы отношения и логические операторы
- 4.2 Операторы цикла
- 4.3 Операторы ветвления
- 4.4 Оператор переключения switch
- 4.5 Оператор прерывания цикла break
- 4.6 Пример сравнения быстродействия матричных и скалярных операций
- Вопросы для самопроверки
- Глава 5 высокоуровневая графика
- 5.1 2D графика
- 5.1.1 Графики в линейном масштабе
- 5.2 Специальные виды 2d - графиков
- 5.2.1 Представление функции в виде дискретных отсчетов
- 5.2.2 Лестничные графики
- 5.2.3 Графики с указанием погрешности
- 5.2.4 Графики в логарифмическом и полулогарифмическом масштабах
- 5.2.5 Графики параметрических функций
- 5.3 3D графика
- 5.3.1 Линейчатые поверхности
- 5.3.2 Каркасные поверхности
- 5.3.3 Контурные графики
- 5.3.4 Сплошная освещенная поверхность
- 5.4 Оформление, экспорт и анимация
- 5.4.1 Оформление графиков
- 5.4.2 Сохранение и экспорт графиков
- 5.4.3 Анимация
- Вопросы для самопроверки
- Глава 6 прикладная численная математика
- 6.1 Операции с полиномами
- 6.2 Решение уравнений и их систем
- 6.3 Минимизация функции одной переменной
- 6.4 Минимизация функции нескольких переменных
- 6.5 Вычисление определенных интегралов
- 6.6 Решение дифференциальных уравнений
- 6.7 Аппроксимация и интерполяция данных
- 6.8 Интерполяция двумерных и многомерных данных
- Вопросы для самопроверки
- Глава 7 символьные вычисления
- 7.1 Символьные переменные, константы и выражения
- 7.2 Вычисления с использованием арифметики произвольной точности
- 7.3 Команды упрощения выражений – simplify, simple
- 7.4 Команда расширения выражений – expand
- 7.5 Разложение выражений на простые множители – команда factor
- 7.6 Приведение подобных членов – команда collect
- 7.7 Обеспечение подстановок – команда subs
- 7.8 Вычисление пределов – команда limit
- 7.9 Вычисление производных – команда diff
- 7.10 Вычисление интегралов – команда int
- 7.11 Разложение в ряд Тейлора – команда taylor
- 7.12 Вычисление суммы ряда – команда symsum
- 7.13 Решение уравнений и их систем – команда solve
- 7.14 Решение дифференциальных уравнений – команда dsolve
- 7.15 Прямое и обратное преобразования Лапласа – команды laplace,ilaplace
- 7.16 Графики символьных функций – команды ezplot, ezpolar
- 7.17 Прямой доступ к ядру системы Maple – командаmaple
- 7.18 Разложение рациональной дроби на сумму простейших дробей
- 7.19 Интерполяционный полином Лагранжа
- 7.20 Решение неравенств и систем неравенств
- 7.21 Разложение в ряд Тейлора функции нескольких переменных
- 7.22 Решение дифференциальных уравнений с помощью степенных рядов
- 7.23 Решение тригонометрических уравнений
- Вопросы для самопроверки
- Приложения Приложение 1. Справочная система matlab
- Приложение 2. Знакомство с пакетами расширения системыMatlab
- Приложение 3. Задания для самостоятельной работы
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Варианты
- Литература