- •Компьютерное обеспечение математических вычислений
- •Пакет прикладных программ mathcad
- •1. Версии пакета Mathcad
- •2. Правила написания. Панели инструментов. Простые и глобальные определения
- •3.4. Команды раздела меню Инструменты (Tools)
- •4. Встроенные функции
- •5. Операции с векторами и матрицами
- •6. Циклические операции. Программирование
- •7. Аналитические преобразования
- •8. Графики
- •9. Решение алгебраических и трансцендентных уравнений
- •10. Решение дифференциальных уравнений
- •11. Интерполяция
- •12. Пример анимации
- •13. Полезные советы
- •14. Вопросы для повторения
10. Решение дифференциальных уравнений
Функция odesolve используется при решении дифференциальных уравнений второго порядка, линейных относительно старшей производной. Функция odesolve может применяться как для решения начальной задачи – задачи Коши, так и для решения краевой задачи. Для решения формируется решающий блок, включающий
служебное слово Given,
дифференциальное уравнение и ограничивающие условия,
функцию odesolve(x,b,[step]).
Здесь x
– независимая переменная, b
– конечная точка отрезка интегрирования
(x
и b
– действительные величины), step
– шаг приращения аргумента, который
может выбираться по умолчанию. Начальная
точка отрезка интегрирования задается
начальным условием. Для производных
могут использоваться обозначения d/dx,
d2/dx2,
либо обозначения
.
Знак производной можно взять с панели
инструментов или вызвать командой “?”.
Условия задаются
в виде y(x)=c
или
.
Mathcad
не воспринимает более сложных условий,
таких как
.
Напомним, что в условиях используется
знак логического равенства (Ctrl+=).
П
о
умолчанию функция odesolve
использует метод Рунге-Кутта с
фиксированным шагом.
Рассмотрим активный пример на языке Mahtcad.
Функция rkfixed(y,x1,x2,npoints,D) применяется для решения системы из n уравнений (в частности, n может быть равно 1). Аргументы функции:
y – вектор, содержащий n начальных условий,
x1, x2 – начальная и конечная точки отрезка интегрирования,
npoints – количество точек, в которых вычисляется приближенное решение,
D – вектор, размерности n, содержащий правые части системы уравнений.
Функция rkfixed применяется также для решения уравнения n-го порядка, которое может быть нелинейным относительно старшей производной. В этом случае уравнение предварительно преобразуется к системе уравнений первого порядка.
Функция rkfixed возвращает матрицу, в которой первый столбец содержит значения независимой переменной, а остальные столбцы содержат найденные значения неизвестных функций. Количество строк возвращаемой матрицы равно npoints+1.
Пример 10.2. Найдем решение задачи Коши
,
используя функцию
rkfixed.
Преобразуем уравнение в эквивалентную
систему уравнений первого порядка:
Для решения задачи запишем последовательность
команд на языке Mathcad:
Вектор y
содержит начальные условия – значения
y0
и y1
в начальной точке. Вектор D
описывает правые части системы уравнений.
Столбцы матрицы Z
содержат значения независимого аргумента,
а также найденные значения неизвестной
функции и ее производной. Решение в
среде Mathcad
приведено на рис. 10.2. На левом графике
показаны зависимости
.
Правый график представляет фазовую
траекторию – зависимость
.
Функция sbval(v,
x1,
x2,
D,
load,
score)
используется
при решении двухточечной краевой задачи
для системы из n
уравнений первого порядка
с краевыми условиями
и
.
Здесь x1,
x2
– концы отрезка интегрирования.
Функция sbval реализует метод пристрелки для сведения краевой задачи к задаче Коши. Поскольку ни в одной из граничных точек: ни в точке x1, ни в точке x2 – не хватает условий для решения задачи Коши, недостающие условия необходимо добавить. На начальном этапе эти недостающие условия могут быть выбраны произвольно. В общем случае использования метода пристрелки добавляется n-k условий в точке x1 и k условий в точке x2. Тем самым формируется n-мерный вектор добавленных параметров или, иначе, вектор недостающих параметров. После добавления недостающих условий можно решать задачу Коши, как исходя из точки x1, так и исходя из точки x2. На отрезке [x1,x2] выбирается точка сшивания, в которой решения, исходящие из противоположных концов этого отрезка, сравниваются между собой. Метод пристрелки путем последовательных приближений позволяет найти такое значение вектора добавленных параметров, при котором невязка, возникающая при сравнении решений, обращается в нуль. Тем самым определяются недостающие начальные условия, позволяющие свести исходную краевую задачу к задаче Коши.
При использовании функции sbval в качестве точки сшивания берется точка x2. Вычисленные на каждом этапе последовательных приближений решения задачи Коши сравниваются в точке x2 со значениями, заданными в условиях задачи. Вектор добавленных параметров имеет в этом случае n-k компонент.
Аргументы функции sbval:
x1, x2 – левая и правая граничные точки отрезка интегрирования;
D(x,y) – функция двух аргументов, значением которой является n-элементный вектор, включающий правые части входящих в систему уравнений;
v – вектор добавленных параметров – вектор, включающий исходные значения для поиска недостающих начальных условий в точке x1;
load(x1,v) – функция двух аргументов, значением которой является n-элементный вектор, включающий значения неизвестных функций y0,…,yn-1 в точке x1 – часть этих значений задана в условиях задачи, а для недостающей части используются значения, входящие в вектор v;
score(x2,y) – функция, значением которой является вектор, включающий разности между заданными и вычисленными значениями неизвестных функций в точке x2 – вектор невязки. Размерность вектора невязки совпадает с размерностью вектора v.
Функция sbval возвращает вектор, содержащий найденные недостающие начальные значения в точке x1. После вычисления недостающих условий для решения задачи Коши может быть применена функция rkfixed.
Пример 10.3. Найдем решение краевой задачи
Преобразуем уравнение к системе уравнений первого порядка:
Используем функцию sbval, чтобы свести краевую задачу к задаче Коши. Записываем последовательность команд на языке Mathcad с комментариями:
a:=0, b:=1 – начало и конец отрезка интегрирования.
v0:=1 – исходное значение вектора недостающих параметров в точке a=0. В данном случае этот вектор имеет всего одну компоненту. Пусть это будет значение
Тогда исходное значение вектора
начальных условий в точке a
равно
– правые части
входящих в систему уравнений.
–
вектор невязки в
точке b,
имеющий в данном случае лишь одну
компоненту.
– найденное
значение вектора недостающих параметров.
Фактически вектор имеет лишь одну
компоненту.
Теперь можно решить задачу Коши помощью функции rkfixed и сравнить с точным решением:
– найденное
значение вектора начальных условий в
точке a.
– решение задачи
Коши.
– значения
аргумента.
– точное решение.
– производная
точного решения.
На рис. 10.3 приведены точные и приближенные результаты расчетов.
В справочной системе Help приведен пример решения краевой задачи для уравнения пятого порядка.
Ф
ункция
bvalfit(v1,v2,x1,x2,xf,D,load1,load2,score)
применяется
при решении двухточечной краевой задачи
для системы обыкновенных дифференциальных
уравнений. С помощью метода пристрелки
определяются недостающие начальные
значения в точке x1
– левой границе отрезка интегрирования.
В отличие от функции sbval
точка сшивания решений, исходящих из
точек x1
и x2,
для функции bvalfit
может быть произвольной. Функция bvalfit
позволяет найти решение также и в том
случае, когда нарушается условие
непрерывности неизвестных функций
где-либо на отрезке интегрирования.
Аргументы функции:
x1, x2 – границы отрезка интегрирования;
xf – точка сшивания;
функция D(x,y) – вектор, компонентами которого являются правые части системы уравнений;
v1 – вектор, включающий исходные значения для поиска недостающих условий в точке x1;
v2 – вектор, включающий исходные значения для поиска недостающих условий в точке x2;
функция load1(x1,v1) – n-элементный вектор, включающий значения неизвестных функций в точке x1 – для недостающих значений используются соответствующие значения вектора v1;
функция load2(x2,v2) – n-элементный вектор, включающий значения неизвестных функций в точке x2 – для недостающих значений используются соответствующие значения вектора v2;
ф
ункция
score(xf,y)
– n-элементный
вектор, описывающий условие сшивания
решений в точке xf
– условие score(xf,y):=y
означает совпадение значений для всех
неизвестных функций.
Функция bvalfit возвращает матрицу, столбцы которой содержат вычисленные недостающие начальные условия в точках x1 и x2.
Пример 10.4. Пример, приведенный в справочной системе Help. Требуется найти решение краевой задачи
Составим программу вычислений на языке Mathcad:
– вектор, включающий
правые части эквивалентной системы
уравнений.
–
точка сшивания –
точка разрыва второй производной
неизвестной функции.
–
исходные значения
для поиска недостающих значений в
точках x1
и x2.
–
значения неизвестных
функций в точках x1
и x2.
–
матрица, столбцы
которой содержат в данном примере лишь
по одному значению:
и
.
Решим задачу Коши на отрезках непрерывности: от -1 до 0 и от 1 до 0:
График решения y(x) показан на рис. 9.4.
Программа Mathcad включает также специализированные процедуры для решения дифференциальных уравнений:
– Rkadapt – решение задачи Коши с автоматическим выбором шага изменения аргумента (при этом результат расчетов представляются в узлах сетки с равномерным шагом);
– Stiffb, Stiffb – решение “жестких” уравнений;
– relax, multigrid – решение уравнений в частных производных.
