Дифференциальные уравнения очень часто применяются для описания изменяющихся процессов. Для начала рассмотрим обыкновенное дифференциальное уравнение (ОДУ):
Аналитическое решение этого уравнения:
Аналитическое решение является точным, и оно быстро дает результат. К сожалению, многие практические дифференциальные уравнения не могут быть решены аналитически. Поэтому нам нужны численные методы.
Метод Эйлера
Наиболее простой метод решения дифференциальных уравнений – метод Эйлера. Это старый метод, легкий для понимания и программирования.
Вычисляем изменения, шаг за шагом:
Сравнение результата и точного решения:
Заметьте, что решение методом Эйлера немного отличается от точного решения, и с ростом аргумента эта разница увеличивается. Уменьшить ошибку можно, если увеличить число шагов.
Блок решения ОДУ
Mathcad содержит все главные решатели дифференциальных уравнений. Их можно найти в меню Функции –> Дифференциальные уравнения. В этом уроке мы рассмотрим самый важный из них. Он прост в использовании и точен. Такой метод сочетает использование блока решения и функцию odesolve(). Перед решением определим:
Все вхождения зависимой переменной c в блоке решения записываются как функции независимой переменной, т.е. как c(t). Есть только одно исключение – запись слева от команды odesolve().
Решение этим методом и аналитическое решение близки. Этот же результат можно получить, записав производную через штрих с помощью [Ctrl+’]:
Пример: сердце и артерии
Работа сердца похожа на работу поршневого насоса: оба они расширяются и сжимаются, клапаны на входе и выходе позволяют течь только в одном направлении. Впускной клапан открывается, когда камера расширяется и позволяет крови попасть в сердце из вены. При сжатии камеры впускной клапан закрывается, и кровь выбрасывается в артерию. Выпускной клапан закрывается, когда камера начинает расширяться.
Пульсация потока уменьшается расширением и сжатием эластичных стенок артерий.
Перепады давления возле легких низки: примем, что избыточное давление в точках A и B равно нулю. Центральным элементом являются артерии, изменение объема которых определяются разницей входного и выходного потоков:
Предположим, что объем сердца изменяется во времени по синусоидальному закону, но кровь выпускается только в течение положительной полуволны:
График для восьми ударов:
Средний поток – это интеграл объема в течение одного удара, деленный на время удара:
Расширение артерий зависит от эластичности стенок и их геометрии, но мы не будем анализировать это здесь. Предположим, что объем линейно зависит от избытка давления:
Чем эластичнее стенки, тем больше значение k. Определим три значения:
Сопротивление тела:
Разность давлений следует из:
Баланс объемов артерий:
Из
получаем дифференциальное уравнение для давления:
Решим его таким же образом, как и предыдущее, с той разницей, что k передадим в блок решения как параметр:
Выведем решения:
Максимумы давления зависят от эластичности артерий – чем больше эластичность, тем меньше давление:
Здесь мы использовали для примера одно дифференциальное уравнение первого порядка, но Mathcad этим не ограничивается.
Резюме
- Обыкновенное дифференциальное уравнение содержит два вида переменных: зависимые (y(x)) и независимые (x).
- Решение можно получить с помощью блока решения и функции odesolve().
- Используйте оператор дифференцирования или штрих в записи дифференциального уравнения. Штрих вводится с помощью [Ctrl+’].
- Введите необходимые граничные условия (они могут содержать запись производной через штрих).
- Функция odesolve() содержит зависимую переменную и независимую переменную.
- Зависимые переменные записываются как функции от независимых.
- В завершение присвойте выходной переменной функцию odesolve(). Выходная переменная не записывается как функция от независимой переменной.
- Однако, при использовании вывода нужно записывать его как функцию независимой переменной.
No comments yet.