Для решения дифференциальных уравнений 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. Построение векторного поля системы ОДУ.
|