f = 
How Does the 'All' Option Affect the Result of Symbolic simplify?
Show older comments
Start with a simple expression
syms alpha beta real
f = cos(beta)-cos(beta)*cos(alpha)^2
and try to simplify it:
simplify(f)
I was expecting the obvious substitution of sin(alpha)^2, but maybe not so obvious to the symbolic engine.
Try 20 steps and return all of the results.
A1 = simplify(f,20,'All',true);
Check the first result
A1(1)
Do the same with 1000 steps
A2 = simplify(f,1000,'All',true);
A2(1)
I was expecting that the first result, if not the first 20 results, would be the same form both calls to @doc:simplify.
Why does asking for more steps change the result in the first step?
Its looks odd that it takes more than 200 steps to return (arguably?) the simplest result that I suspect most users would be expecting.
simplify(f,200)
Answers (1)
Soumya
on 27 Oct 2025
0 votes
Hi Paul,
When applying simplify to the expression 'cos(beta) - cos(beta)*cos(alpha)^2', the MATLAB Symbolic Math Toolbox does not immediately produce the equivalent form 'cos(beta)*sin(alpha)^2'. This is due to the way 'simplify' operates: it performs a heuristic search through algebraically equivalent expressions and ranks them using an internal complexity metric, applying a transformation only when it determines the resulting form to be simpler according to that metric. The number of allowed simplification steps, specified by the Steps parameter, controls the breadth of this search. The documentation notes that “By default, simplify uses one internal simplification step. You can get different, often shorter, simplification results by increasing the number of simplification steps” and that “Simplification of a mathematical expression is not a clearly defined subject. There is no universal idea as to which form of an expression is simplest.” Because the first result returned when using 'All', true corresponds to the earliest lower-complexity form encountered in the search, increasing the number of steps (for example, from 20 to 1000) can alter that ordering and yield a different initial result. As a consequence, the form involving sin(alpha)^2 appears only once the search depth is sufficient, typically above approximately 200 steps.
You can refer to the following documentation for more information:
- Simplify symbolic expressions: https://www.mathworks.com/help/symbolic/simplify-symbolic-expressions.html
- simplify: https://www.mathworks.com/help/symbolic/sym.simplify.html
I hope this helps!
Categories
Find more on Symbolic Math Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!