- •Глава 7 символьные вычисления
- •7.1 Символьные переменные, константы и выражения
- •7.2 Вычисления с использованием арифметики произвольной точности
- •7.3 Функции упрощения выражений – simplify, simple
- •7.4 Функция расширения выражений – expand
- •7.5 Разложение выражений на простые множители – функция factor
- •7.6 Приведение подобных членов – функция collect
- •7.7 Обеспечение подстановок – функция subs
- •7.8 Функция вычисления пределов – limit
- •7.9 Функция вычисления производных – diff
- •7.10 Функция вычисления интегралов – int
- •7.11 Функция разложения выражения в ряд Тейлора – taylor
- •7.12 Функция вычисления сумм рядов – symsum
- •7.13 Решение алгебраических уравнений и систем– функция solve
- •7.14 Решение дифференциальных уравнений – функция dsolve
- •7.15 Прямое и обратное преобразования Лапласа – функции laplace, ilaplace
- •7.16 Графики символьных функций – команды ezplot, ezpolar
- •7.17 Доступ к ресурсам ядра системы Maple
- •1) Разложение рациональной дроби на сумму простейших дробей
- •2) Нахождение интерполяционного полинома Лагранжа
- •3) Решение неравенств и систем неравенств
- •4) Разложение в ряд Тейлора функции нескольких переменных
- •5) Решение дифференциальных уравнений с помощью степенных рядов
- •6) Решение тригонометрических уравнений
5) Решение дифференциальных уравнений с помощью степенных рядов
Пусть требуется решить дифференциальное уравнение y' =cosx+ey с начальным условием y(0)=1.
>> dsolve('Dy=cos(x)+exp(y)','y(0)=1','x')
ans =
[ empty sym ]
Функция dsolve не нашла аналитического решения в MATLAB.
Известно, что решения этого дифференциального уравнения в аналитическом виде не существует. Найти разложение решения в степенной ряд (до 6-й степени по умолчанию) можно с помощью функции dsolve системы Maple.
>> maple('dsolve({diff(y(x),x)=cos(x)+exp(y(x)),y(0)=1},y(x),series)')
ans =
y(x) = series(1+(1+exp(1))*x+(1/2*exp(1)*(1+exp(1)))*x^2+(-1/6+1/3*exp(1)*(3/2*exp(1)+exp(1)^2+1/2))*x^3+(1/2*exp(1)^3+1/4*exp(1)^4+7/24*exp(1)^2)*x^4+(1/2*exp(1)^4+1/5*exp(1)^5+5/12*exp(1)^3+1/120-1/40*exp(1)+1/12*exp(1)^2)*x^5+O(x^6),x,6)
Имеется возможность управлять порядком разложения. Найдем разложение решения в степенной ряд до 3-й степени:
>> maple('Order:=3;dsolve({diff(y(x),x)=cos(x)+exp(y(x)),y(0)=1},y(x),series)')
ans =
Order := 3y(x) = series(1+(1+exp(1))*x+(1/2*exp(1)*(1+exp(1)))*x^2+O(x^3),x,3)
6) Решение тригонометрических уравнений
Пусть требуется решить уравнение cos2x+ sinx=1.
>> syms x
>> solve('cos(2*x)+sin(x)=1',x)
ans =
[ 0]
[ pi]
[ 1/6*pi]
[ 5/6*pi]
Отметим, что непосредственно в MATLAB функция solve возвращает только значения корней, которые находятся в интервале [–;]. Для получения всех решений тригонометрических уравнений следует использовать следующие команды системы Maple:
>> maple('_EnvAllSolutions:=true');
>> maple('solve(cos(2*x)+sin(x)=1,x)')
ans =
2*pi*_Z, pi+2*pi*_Z, 1/6*pi+2*pi*_Z, 5/6*pi+2*pi*_Z
Здесь _Z – переменная целого типа.