Simplification of expressions¶
Simplification of expression is a big and nontrivial subject. Simplification implies that there is a preferred form. In practice the preferred form depends on the calculation at hand. This chapter describes the functions offered that allow simplification of expressions.

Simplify
(expr)¶ try to simplify an expression
This function tries to simplify the expression
expr
as much as possible. It does this by grouping powers within terms, and then grouping similar terms. Example
In> a*b*a^2/ba^3 Out> (b*a^3)/ba^3; In> Simplify(a*b*a^2/ba^3) Out> 0;
See also
FactorialSimplify()
,LnCombine()
,LnExpand()
,RadSimp()
,TrigSimpCombine()

RadSimp
(expr)¶ simplify expression with nested radicals
This function tries to write the expression
expr
as a sum of roots of integers: \(\sqrt{e_1} + \sqrt{e_2} + ...\), where \(e_1,e_2\) and so on are natural numbers. The expressionexpr
may not contain free variables.It does this by trying all possible combinations for \(e_1,e_2,\ldots\). Every possibility is numerically evaluated using
N()
and compared with the numerical evaluation ofexpr
. If the approximations are equal (up to a certain margin), this possibility is returned. Otherwise, the expression is returned unevaluated.Note
Due to the use of numerical approximations, there is a small chance that the expression returned by
RadSimp()
is close but not equal toexpr
:In> RadSimp(Sqrt(1+10^(6))) Out> 1;
Note
If the numerical value of
expr
is large, the number of possibilities becomes exorbitantly big so the evaluation may take very long. Example
In> RadSimp(Sqrt(9+4*Sqrt(2))) Out> Sqrt(8)+1; In> RadSimp(Sqrt(5+2*Sqrt(6)) + Sqrt(52*Sqrt(6))) Out> Sqrt(12); In> RadSimp(Sqrt(14+3*Sqrt(3+2*Sqrt(512*Sqrt(32*Sqrt(2)))))) Out> Sqrt(2)+3;
See also

FactorialSimplify
(expression)¶ simplify hypergeometric expressions containing factorials
FactorialSimplify()
takes an expression that may contain factorials, and tries to simplify it. An expression like \(\frac{(n+1)!}{n!}\) would simplify to \((n+1)\).See also
Simplify()
,()

LnExpand
(expr)¶ expand a logarithmic expression using standard logarithm rules
LnExpand()
takes an expression of the form \(\ln(expr)\), and applies logarithm rules to expand this into multipleLn()
expressions where possible. An expression like \(\ln(ab^n)\) would be expanded to \(\ln(a)+n\ln(b)\). If the logarithm of an integer is discovered, it is factorised usingFactors()
and expanded as thoughLnExpand()
had been given the factorised form. So \(\ln(18)\) goes to \(\ln(2)+2\ln(3)\).See also

LnCombine
(expr)¶ combine logarithmic expressions using standard logarithm rules
LnCombine()
findsLn()
terms in the expression it is given, and combines them using logarithm rules. It is intended to be the converse ofLnExpand()
.See also

TrigSimpCombine
(expr)¶ combine products of trigonometric functions
This function applies the product rules of trigonometry, e.g. \(\cos{u}\sin{v} = \frac{1}{2}(\sin(vu) + \sin(v+u))\). As a result, all products of the trigonometric functions
Cos()
andSin()
disappear. The function also tries to simplify the resulting expression as much as possible by combining all similar terms. This function is used in for instanceIntegrate()
, to bring down the expression into a simpler form that hopefully can be integrated easily. Example
In> PrettyPrinter'Set("PrettyForm"); True In> TrigSimpCombine(Cos(a)^2+Sin(a)^2) 1 In> TrigSimpCombine(Cos(a)^2Sin(a)^2) Cos( 2 * a ) Out> In> TrigSimpCombine(Cos(a)^2*Sin(b)) Sin( b ) Sin( 2 * a + b )  +  2 4 Sin( 2 * a  b )   4
See also