Для решения дифференциальных уравнений Mathcad
предоставляет пользователю библиотеку
встроенных функций Differential Equation Solving,
предназначенных для численного решения
дифференциальных уравнений.
- Встроенная функция odesolve (Mathcad 2000),
предназначенная для решения дифференциальных
уравнений, линейных относительно
старшей производной (наиболее проста в
использовании).
|
подробная информация о функции odesolve,
примеры |
- Встроенные функции, предназначенные для
решения задачи Коши и граничных задач для систем
обыкновенных дифференциальных уравнений в
нормальной форме.
|
подробная информация о функциях,
примеры |
Встроенная функция odesolve
предназначена для решения дифференциальных
уравнений, линейных относительно
старшей производной. В отличие от других функций
библиотеки Differential Equation Solving, odesolve
решает дифференциальные уравнения, записанные в
общепринятом в математической литературе виде.
- Функция odesolve решает для уравнений вида
a(x) y(n) + F(x, y, y' , ..., y(n-1) )=f(x)
задачу Коши
y(x0 )=y0 , y'(x0 )=y0,1 , y''(x0
)=y0,2 , ..., y(n-1)(x0 )=y0,n-1
или простейшую граничную задачу
y(k) (a)=ya,k , y(m) (b)=yb,k , 0<=
k<= n-1, 0<= m<= n-1.
- Функция odesolve решает поставленную
задачу методом Рунге-Кутты с фиксированным
шагом. Для решения задачи методом Рунге-Кутты с
автоматическим выбором шага нужно щелкнуть в
рабочем документе по имени функции правой
кнопкой мыши и пометить во всплывающем меню
пункт Adaptive.
- Обращение к функции имеет вид
Y:=odesolve(x,b,step) или Y:=odesolve(x,b),
где Y - имя функции, содержащей значения
найденного решения, x — переменная
интегрирования, b — конец промежутка
интегрирования, step — шаг, который
используется при интегрировании уравнения
методом Рунге-Кутты.
- Перед обращением к функции odesolve
необходимо записать ключевое слово Given,
затем ввести уравнение и начальные либо
граничные условия. При вводе уравнения и условий
задачи используется знак символьного равенства (<Ctrl>+<=>),
а для записи производных можно использовать как
оператор дифференцирования, так и знак
производной, например, вторую производную можно
вводить в виде или в виде y''(x). При
этом необходимо обязательно записывать аргумент
искомой функции.
- Для того чтобы вывести в рабочий документ
значения решения в любой точке промежутка
интегрирования, достаточно ввести имя функции Y,
указать в скобках значение аргумента и знак
равенства.
- Значения решения в любой точке промежутка
интегрирования можно использовать в дальнейших
вычислениях, достаточно ввести в нужном месте
имя функции Y, указав в скобках значение
аргумента.
Полную информацию о правилах использования
функции odesolve можно получить во
встроенном справочнике Mathcad в разделе Overview fnd
Tutorials.
Пример 1. Решение задачи
Коши с помощью функции odesolve.
Пример 2. Решение
граничной задачи с помощью функции odesolve.
Встроенные функции Mathcad, предназначенные для
решения задачи Коши и граничных задач, решают их
для нормальных с и с т е м
обыкновенных дифференциальных уравнений. Задачи
для уравнений высших порядков сводятся к
соответствующим задачам для нормальных с и с т е
м.
Рассмотрим задачу Коши:
Численное решение этой задачи состоит в
построении таблицы приближенных значений
yi,1 , yi,2 , ..., yi,N
решения y1 (x), y2 (x), ..., yN (x)
на отрезке [x0 , xN ] в точках
x1 , x2 , ..., xN, которые
называются узлами сетки.
Обозначив
, ,
,
,
где —
искомое решение, — вектор начальных условий, а — вектор
правых частей, запишем систему дифференциальных
уравнений в векторной форме:
, .
В Mathcad решить задачу Коши для такой
системы можно с помощью следующих функций:
- rkfixed(y, x1, x2, npoints, D) —решение задачи на отрезке
методом Рунге—Кутты с постоянным шагом;
- Rkadapt(y, x1, x2, npoints, D) —решение задачи на отрезке
методом Рунге—Кутты с автоматическим выбором
шага;
- rkadapt(y, x1, x2, acc, npoints, D, kmax, save) —решения задачи в
заданной точке методом Рунге-Кутты с
автоматическим выбором шага;
- Bulstoer(y, x1, x2, npoints, D) —решение задачи на
отрезке методом Булирша-Штера;
- bulstoer(y, x1, x2, acc, npoints, D, kmax, save) —решение
задачи в заданной точке методом Булирша—Штера;
- Stiffr(y, x1, x2, acc, D, J) — решение задачи для
жестких систем на отрезке с использованием
алгоритма Розенброка;
- stiffr(y, x1, x2, acc, D, J, kmax, save) —решения задач для
жестких систем на отрезке с использованием
алгоритма Розенброка;
- Stiffb(y, x1, x2, acc, D, J) —решение задачи для жестких
систем на отрезке с использованием алгоритма
Булирша—Штера;
- stiffb(y, x1, x2, acc, D, J, kmax, save) —решение задач для
жестких систем в заданной точке с использованием
алгоритма Булирша—Штера.
Смысл параметров для всех функций одинаков
и определяется математической постановкой
задачи:
y — вектор начальных условий , ;
x1, x2 — начальная и конечная
точки отрезка интегрирования системы; для
функций, вычисляющих решение в заданной точке, x1
— начальная точка, x2 — заданная точка;
npoints — число узлов на отрезке [x1, x];
при решении задачи на отрезке результат содержит
npoints+1 строку;
D — имя вектор-функции D(x,y)
правых частей , ; (
имя D – от Derivative — производная, имя
вектора, содержащего выражения для производных
(derivatives) искомого решения);
J — имя матрицы-функции J(x,y)
размерности n x (n+1), в первом столбце
которой хранятся выражения частных производных
по x правых частей системы, а в остальных n
столбцах содержится матрица Якоби правых частей:
.
acc — параметр, контролирующий
погрешность решения при автоматическом выборе
шага интегрирования (если погрешность решения
больше acc, то шаг сетки уменьшается; шаг
уменьшается до тех пор, пока его значение не
станет меньше save );
kmax — максимальное число узлов сетки, в
которых может быть вычислено решение задачи на
отрезке, максимальное число строк в результате;
save — наименьшее допустимое значение
шага неравномерной сетки.
Результат работы функции — матрица, содержащая
n+1; ее первый столбец содержит координаты
узлов сетки, второй столбец — вычисленные
приближенные значения решения y1 (x) в
узлах сетки, (k+1) -й — значения решенияyk
(x) в узлах сетки.
При решении задачи Коши для дифференциального
уравнения первого порядка результат вычислений
всех приведенных выше функций — матрица, в
первом столбце которой содержатся координаты
узлов сетки x0 , x1 , ..., xN, а во
втором — значения приближенного решения в
соответствующих узлах.
Пример 3. Решение задачи
Коши для ОДУ 1 порядка с помощью функции rkfixed.
Пример 4. Решение
задачи Коши для ОДУ 2 порядка с помощью функции
rkfixed.
Пример 5. Решение
задачи Коши для системы ОДУ 1 порядка с помощью
функции rkfixed.
Пример 6. Решение
жесткой задачи Коши для системы ОДУ 1 порядка с
помощью функции Stiffr.
При исследовании автономных систем
дифференциальных уравнений второго порядка
полезную информацию можно получить рассматривая
интегральные и фазовые кривые системы.
Пример 7. Построение
фазовой и интегральной кривых решения задачи
Коши для системы ОДУ 1 порядка.
При исследовании автономных систем
дифференциальных уравнений второго порядка
полезную информацию о свойствах решений можно
получить, построив векторное поле системы.
Запишем автономную систему второго порядка
.
Эта система полностью определяется заданием
векторного поля , поскольку векторное поле задает в каждой точке
направление касательной к фазовой кривой
системы, проходящей через эту точку.
Пример 8. Построение
векторного поля системы ОДУ.
|