- •Глава 2. Основные понятия и конструкции системы
- •2.1. Алфавит и синтаксис Maple-языка
- •2.2. Последовательности выражений
- •2.3. Операторы оценивания выражений
- •2.4. Извлечение операндов выражений
- •2.5. Наборы и операции с наборами
- •2.6. Списки и операции со списками
- •2.7. Типы объектов и выражений
- •2.8. Преобразование типов выражений
- •2.9. Имена переменных
- •2.10. Типы переменных
- •2.11. Оператор присваивания
- •2.12. Отмена операции присваивания
- •2.13. Ограничение значений переменных
- •2.14. Операторы
- •2.15. Математические функции
- •2.16. Операции с формулами и выражениями
- •2.17. Операции с полиномами
- •2.18. Массивы, векторы и матрицы
- •2.19. Строковые переменные
- •Упражнения
- •Глава 3. Операции и функции математического анализа
- •3.1. Вычисление сумм и рядов
- •3.2. Вычисление произведений членов некоторой последовательности
- •3.3. Вычисление производных
- •3.4. Вычисление пределов
- •3.5. Интегрирование выражений
- •3.6. Разложение функций в ряды
- •3.7. Нахождение экстремумов, максимумов и минимумов функций
- •3.8. Анализ функций на непрерывность
- •Упражнения
- •Глава 4. Решение уравнений и неравенств
- •4.1. Основные понятия и конструкции
- •4.2. Решение одиночных уравнений
- •4.3. Решение систем алгебраических уравнений
- •4.4. Присваивание значений полученных решений
- •4.5. Поиск корней полиномов
- •4.6. Решение тригонометрических уравнений
- •4.7. Решение неравенств
- •4.8. Решение функциональных уравнений
- •4.9. Решение рекуррентных уравнений
- •4.10. Численное решение уравнений и систем
- •4.11. Решение дифференциальных уравнений
- •Упражнения
4.11. Решение дифференциальных уравнений
Для решения обыкновенных дифференциальных уравнений и систем используется функция вида
dsolve(deqns, vars) или dsolve(deqns, vars, eqns) .
Здесь deqns – обыкновенное дифференциальное уравнение или система уравнений и начальных условий;
vars – переменная или набор переменных, относительно которых необходимо решить уравнения;
eqns – этот параметр может принимать значения: type=exact, type=series, type=numeric, explicit=true, explicit=false, method=laplace, type=series, output=basis, type=numeric.
Функция dsolve способна найти решения в замкнутом виде для многих дифференциальных уравнений. Если задан параметр type=exact (по умолчанию), то система пытается найти точное аналитическое решение. Решение возвращается в виде уравнения y(x) или в параметрической форме вида x=f(_T), y(x)=g(_T), где _T – параметр. Константы, входящие в общее решение, представляются в виде _C1, _C2, ..., _Cn.
Если задан параметр explicit=true, то решение, по возможности, будет возвращено в явном виде. По умолчанию считается explicit=false.
Значение method=laplace задаёт способ решения с использования преобразования Лапласа. Одно из преимуществ этого метода – то, что в этом случае уравнения могут содержать функции с особенностями, например Дирака или Хевисайда.
Значение type=series задаёт метод решения в рядах. Порядок решения определяется значением переменной среды Order. Напомним, что формальные производные можно задавать с помощью оператора D. Например, вторая производная функции y в точке 0 может быть записана как D(D(y))(0) или (D@@2)(y)(0).
По значению output=basis система возвращает список, содержащий множество функций, входящих в общее решение однородного уравнения. Для неоднородных уравнений этот список содержит ещё и частные решения.
Значение type=numeric определяет, что решение будет находиться численно. Если используется это значение, то после него может быть указан метод решения – одно из значений:
method=rkf45 – метод Рунге-Кутта 4,5-го порядка, используется по умолчанию;
method=dverk78 – метод Рунге-Кутта 7,8-го порядка;
method=classical – некоторые классические методы типа метода Эйлера второго порядка. Используется фиксированный шаг, что не подходит для высоких точностей вычислений;
method=gear, method=mgear – одношаговый и многошаговый методы Геарса;
method=lsode – метод Левермора решения жестких задач для ОДУ.
Для каждого из методов решения имеется набор дополнительных режимов. Более подробную информацию по каждому из методов можно посмотреть командами ?dsolve[numeric], ?dsolve[rkf45], ?dsolve[dverk78], ?dsolve[classical], ?dsolve[gear], ?dsolve[mgear], ?dsolve[lsode].
Кроме этой команды в системе имеется дополнительная библиотека Detools, предназначенная для решения и визуализации обыкновенных дифференциальных уравнений и уравнений в частных производных.
Примеры:
> eqn:=diff(y(x),x$2)-y(x)=0;
> dsolve(eqn,y(x));
y(x) = _C1 exp(x) + _C2 exp(-x)
Сделаем проверку:
> simplify(subs(%,eqn));
0 = 0
> dsolve({diff(v(t),t)+2*t=0, v(1)=5}, v(t));
2
v(t) = -t + 6
> dsolve(diff(y(x),x) - a*y(x) = 0, y(x), explicit=true);
y(x) = exp(a x) _C1
> dsolve({diff(y(t),t$2)+5*diff(y(t),t)+6*y(t)=0,y(0)=0, D(y)(0)=1}, y(t));
y(t) = exp(-2 t) - exp(-3 t)
>eqn1:=diff(y(t),t)=z(t),diff(z(t),t)=y(t);
> eqn2:=y(0)=0, z(0)=1;
eqn2 := y(0) = 0, z(0) = 1
> dsolve({eqn1,eqn2},{y(t),z(t)});
{z(t) = 1/2 exp(-t) + 1/2 exp(t), y(t) = 1/2 exp(t) - 1/2 exp(-t)}