Упрощение и преобразование выражений
Сложные алгебраические и тригонометрические выражения нередко могут быть приведены к эквивалентным выражениям путем упрощения. ToolBox Symbolic Math имеет ряд сервисных функций, предназначенных для различных преобразований символических выражений. Пользователь может производить как стандартные операции над полиномами, так и использовать более общий алгоритм, предназначенный для упрощения выражений, которые содержат встроенные символические функции.
Операции с полиномами реализуют четыре функции:
collect,
expand,
horner,
factor.
Вычисление коэффициентов при степенях независимой переменной производится с использованием функции collect. Введите полином и отобразите его в командном окне при помощи pretty.
p=sym('(x+a)^4+(x-1)^3-(x-a)^2-a*x+x-3')
pretty(p)
p =
(x+a)^4+(x-1)^3-(x-a)^2-a*x+x-3
4 3 2
(x + a) + (x - 1) - (x - a) - a x + x - 3
Преобразуйте р к виду, содержащему степени х с соответствующими коэффициентами:
pc=collect(p);
pretty(pc)
4 3 2 2 3 4 2
x + (1 + 4 a) x + (-4 + 6 a ) x + (4 + a + 4 a ) x + a - 4 - a
По умолчанию в качестве переменной выбирается х, однако можно было cчитать, что а — независимая переменная, а х входит в коэффициенты полинома, зависящего от а. Второй аргумент функции collect предназначен для указания переменной, при степенях которой следует найти коэффициенты
pca=collect(p,'a');
pretty(pca)
4 3 2 2 3 4 3 2
a + 4 x a + (-1 + 6 x ) a + (4 x + x) a + x + (x - 1) - x - 3 + x
Функция expand представляет полином суммой степеней без приведения подобных слагаемых:
pe=expand(p);
pretty(pe)
4 3 2 2 3 4 3 2 2
x + 4 a x + 6 x a + 4 x a + a + x - 4 x + 4 x - 4 + a x - a
Символические полиномы разлагаются на множители функцией factor, если получающиеся множители имеют рациональные коэффициенты:
p=sym('x^5+13*x^4+215/4*x^3+275/4*x^2-27/2*x-18');
pf=factor(p);
pretty(pf)
1/4 (2 x + 1) (2 x - 1) (x + 6) (x + 4) (x + 3)
Упрощение выражений общего вида производится при помощи функций simple и simplify, которые основаны на разных подходах. Функция simplify реализует мощный алгоритм упрощения выражений, содержащих как тригонометрические, экспоненциальную и логарифмическую функции так и специальные. Кроме того, simplify способна преобразовывать выражения, содержащие символическое возведение в степень, суммирование и интегрирование. Алгоритм заложенный в simple, пытается получить выражение, которое представляется меньшим числом символов, чем исходное, последовательно применяя все функции упрощения ToolBox.
Функция subs позволяет произвести подстановку одного выражения в другое. В общем виде subs вызывается с тремя входными аргументами:
именем символической функции,
переменной, подлежащей замене,
и выражением, которое следует подставить вместо переменной.
Функция subs, в частности, облегчает ввод громоздких символических выражений, имеющих определенную структуру:
f=sym('(a^2+b^2)/(a^2-b^2)+a^4/b^4');
f=subs(f,'a','(exp(x)+exp(-x))');
f=subs(f,'b','(sin(x)+cos(x))');
pretty(f)
2 2 4
(exp(x) + exp(-x)) + (sin(x) + cos(x)) (exp(x) + exp(-x))
---------------------------------------- + -------------------
2 2 4
(exp(x) + exp(-x)) - (sin(x) + cos(x)) (sin(x) + cos(x))