Упрощение математических выражений — одна из самых важных задач символьной математики. Частенько невероятно сложное математическое выражение, пугающее новичков своим грозным видом, является просто нулем или единицей либо сводится к простому выражению после ряда вполне заурядных (хотя, порою, и довольно сложных) преобразований. Качество выполнения операции упрощения во многом определяется мощью ядра математической системы, поскольку зависит от числа заложенных в него функций и правил преобразования выражений.
С точки зрения простоты выражений они делятся на недостаточно простые и достаточно простые выражения. Недостаточно простые выражения таят в себе всевозможные «излишества»: сокращаемые общие члены, лишние переменные и функции, полиномы со степенями, допускающими понижение, и т. д. Это затрудняет качественный анализ выражений и может даже приводить к неоднозначным и даже неверным результатам.
Mathematica всегда старается упростить то или иное выражение, если для этого не требуется каких-либо особых средств. Например, сложные выражения, содержащие элементарные или специальные функции, превращаются в более простые выражения — в том лишь смысле, что они состоят из более простых функций. Следующие примеры иллюстрируют это.
Ввод (In)
Вывод (Out)
(Csc[x] Tan[w]) / (Cot[x] Sec[w])
Sec[x] Sin[w]
BesselY[5/2, Е]
SQRT(2/л)(Cos[E]-[3Cos[E]+3Sin[E]]/SQRT(E))
Однако так бывает далеко не всегда, и для проведения необходимых преобразований используются различные функции, описанные ниже.
Для упрощения выражений используется функция Simplify [ехрг]. Она исполняет последовательность алгебраических преобразований над выражением ехрг и возвращает простейшую из найденных форм (обычно это бывает нормальная форма выражения).
Функция Simplify работает с самыми различными математическими выражениями: многочленами, рациональными выражениями (состоящими из полиномов и их отношений), расширенными рациональными выражениями (имеющими дробные степени переменных), элементарными и специальными функциями, алгебраическими и тригонометрическими выражениями и т. д. Обычно она приводит выражения к нормальному виду, что автоматически означает и приведение к виду достаточно простых выражений.
Приведем наиболее характерные результаты действия функции Simplify.
Ввод (In)
Вывод (Out)
Комбинирование числовых подвыражений Simplify [6 х 2]
12 х
Приведение подобных множителей у произведений Simplify[x
^
3 у х
^
5]
х
8
у
Приведение подобных членов суммы Simplify[x + 12 + 4 х]
5 х + 12
Упрощение тождеств, содержащих 0 или 1 Simplify [2+0] Simplify[l*x]
2 х
Распределение целочисленных показателей степени в произведениях Simplify[(5 х
^
2 у
^
3)
^
2]
5 х
4
у
5
Приведение общих знаменателей к выражениям с пониженной степенью или с исключением сокращаемых переменных Simplify [2 х / (х
^
2- 1) - 1/(х + 1) ]
1/(х + 1)
Разложение полиномов и понижение степени выражений Simplify[(x + 1)
^
2-х
^
2]
2 х + 1
Сокращение на наибольший полиномиальный делитель ; Simplify [ (х
^
2 - 2 х у + у
^
2 ) / (х
^
2 - у
^
2 ) ]
(х -у)/(х + у)
Следующие примеры дополнительно поясняют применение функции Simplify.
Simplify[6 Log[10], Complexity Function -> LeafCount]
Log[ 1000000]
Операция Simplify часто выполняется по умолчанию. Например, это обычно происходит при вычислении выражений, примеры чего приводились выше. Несомненно, это одна из наиболее важных и часто применяемых операций компьютерной алгебры.
Вообще говоря, понятие упрощения математических выражений не является однозначным. К примеру, некоторые пакеты символьной математики упрощают sin(x)/cos(x) к единой математической функции tan(x), тогда как другие упрощают tan(x) к sin(.r)/cos(.r), считая, что функции sin(x) и cos(.r) более простые, чем функция tan(.r). Эта неоднозначность часто путает неопытных пользователей, пытающихся проверить символьные системы примерами из справочников, — вполне возможно, что авторы их придерживались несколько иного подхода к упрощению выражений, чем разработчики той или иной математической системы.