Функции компьютерной алгебры. Упрощение выражений (функция 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 делают не совсем понятно что. Тем не менее, часто эти функции позволяют получить вполне приемлемую, хотя вовсе не единственную и не самую простую форму упрощаемого выражения.
