Функции компьютерной алгебры. Упрощение выражений (функция Simplify). Функция полного упрощения FullSimplify.
Следующие примеры дополнительно поясняют применение функции Simplify.
Ввод (In) | Вывод (Out) |
---|---|
Simplify[a*a -2*а*b + b^2] | (a-b)2 |
Simplify [Exp [х] ^2/х] | E2x /X |
Sirnplif у [Sin [x-y] H-Sin [х+у] ] | 2Cos[y] Sin[x] |
Simplif у [Ехр [х] *Ехр [у] /Exp [z] ] | Ex+y-z |
Simplify [Exp [z*Log [b] ] ] | bz |
Simplify [Log [x/y] ] | Log[x/y] |
А: = (Cos[4*x] -4*Cos[2*x] +3)/ (4*Cos[2*x] + Cos[4*x] + 3) | |
Simplify [A] | Tan[x]4 |
Simplify[6*Log[10] ] | 6Log[10] |
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). Эта неоднозначность часто путает неопытных пользователей, пытающихся проверить символьные системы примерами из справочников, – вполне возможно, что авторы их придерживались несколько иного подхода к упрощению выражений, чем разработчики той или иной математической системы.
Функция полного упрощения FullSimplify
Функция FullSimplify, область применения которой в Mathematica 4 заметно расширена, обладает заметно большими возможностями, чем функция Simplify. В частности, она обеспечивает упрощение выражений, содержащих специальные математические функции:
Simplify [Gamma [x]
*
x
*
(x
+
1
)
*
(x
+
2
)
*
(x
+
n) ]
x(
1
+
x) (
2
+
x) (n
+
x) Garrma[x]
FullSimplify [Gamma [x]
*
x
*
(x
+
1
)
*
(x
+
2
)
*
(x
+
n) ]
(n
+
x) Garrma[
3
+
x]
Simplify[Tan[x], ComplexityFunction
>
(Count[{#
1
}, _Tan, \ [Infinity]]
*
;)]
Tan[x]
FullSimplify [Tan [x], ComplexityFunction
>
(Count[{#
1
}, _Tan, \ [Infinity]] &)]
Как видно из этих примеров, функция FullSimplify обеспечивает упрощение даже в том случае, когда функция Simplify пасует. Неплохо упрощаются тригонометрические функции, особенно при использовании опции Complexity-Function, подсказывающей путь упрощения.
В то же время нельзя не отметить, что теоретический фундамент упрощения выражений находится лишь в начале своего возведения, так что не стоит удивляться, если отдельные выражения не будут упрощаться – даже в том случае, когда это в принципе возможно. Более того, с позиций истинного математика функции Simplify и FullSimplify делают не совсем понятно что. Тем не менее, часто эти функции позволяют получить вполне приемлемую, хотя вовсе не единственную и не самую простую форму упрощаемого выражения.