Algebraic simplification
collapse all in page
Syntax
S = simplify(expr)
S = simplify(expr,Name,Value)
Description
example
performs algebraic simplification of S
= simplify(expr)expr
. If expr
is a symbolic vector or matrix, this function simplifies each element of expr
.
example
performs algebraic simplification of S
= simplify(expr,Name,Value)expr
using additional options specified by one or more Name,Value
pair arguments.
Examples
collapse all
Simplify Expressions
Open Live Script
Simplify these symbolic expressions:
syms x a b cS = simplify(sin(x)^2 + cos(x)^2)
S =
S = simplify(exp(c*log(sqrt(a+b))))
S =
Simplify Matrix Elements
Open Live Script
Call simplify
for this symbolic matrix. When the input argument is a vector or matrix, simplify
tries to find a simpler form of each element of the vector or matrix.
syms xM = [(x^2 + 5*x + 6)/(x + 2), sin(x)*sin(2*x) + cos(x)*cos(2*x);(exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2, sqrt(16)];S = simplify(M)
S =
Get Simpler Results for Logarithms and Powers
Open Live Script
Simplify a symbolic expression that contains logarithms and powers. By default, simplify
does not combine powers and logarithms because combining them is not valid for generic complex values.
syms xexpr = (log(x^2 + 2*x + 1) - log(x + 1))*sqrt(x^2);S = simplify(expr)
S =
To apply the simplification rules that allow the simplify
function to combine powers and logarithms, set 'IgnoreAnalyticConstraints'
to true
:
S = simplify(expr,'IgnoreAnalyticConstraints',true)
S =
Get Simpler Results Using More Simplification Steps
Open Live Script
Simplify this expression:
syms xexpr = ((exp(-x*1i)*1i) - (exp(x*1i)*1i))/(exp(-x*1i) + exp(x*1i));S = simplify(expr)
S =
By default, simplify
uses one internal simplification step. You can get different, often shorter, simplification results by increasing the number of simplification steps:
S10 = simplify(expr,'Steps',10)
S10 =
S30 = simplify(expr,'Steps',30)
S30 =
S50 = simplify(expr,'Steps',50)
S50 =
If you are unable to return the desired result, try alternate simplification functions. See Choose Function to Rearrange Expression.
Get Equivalent Results for Symbolic Expression
Open Live Script
Get equivalent results for a symbolic expression by setting the value of 'All'
to true
.
syms xexpr = cos(x)^2 - sin(x)^2;S = simplify(expr,'All',true)
S =
Increase the number of simplification steps to 10. Find the other equivalent results for the same expression.
S = simplify(expr,'Steps',10,'All',true)
S =
Separate Real and Imaginary Parts
Open Live Script
Attempt to separate real and imaginary parts of an expression by setting the value of 'Criterion'
to 'preferReal'
.
syms xf = (exp(x + exp(-x*1i)/2 - exp(x*1i)/2)*1i)/2 -... (exp(-x - exp(-x*1i)/2 + exp(x*1i)/2)*1i)/2;S = simplify(f,'Criterion','preferReal','Steps',100)
S =
If 'Criterion'
is not set to 'preferReal'
, then simplify
returns a shorter result but the real and imaginary parts are not separated.
S = simplify(f,'Steps',100)
S =
When you set 'Criterion'
to 'preferReal'
, the simplifier disfavors expression forms where complex values appear inside subexpressions. In nested subexpressions, the deeper the complex value appears inside an expression, the least preference this form of an expression gets.
Avoid Imaginary Terms in Exponents
Open Live Script
Attempt to avoid imaginary terms in exponents by setting 'Criterion'
to 'preferReal'
.
Show this behavior by simplifying a complex symbolic expression with and without setting 'Criterion'
to 'preferReal'
. When 'Criterion'
is set to 'preferReal'
, then simplify
places the imaginary term outside the exponent.
expr = sym(1i)^(1i+1);withoutPreferReal = simplify(expr,'Steps',100)
withoutPreferReal =
withPreferReal = simplify(expr,'Criterion','preferReal','Steps',100)
withPreferReal =
Simplify Units
Open Live Script
Simplify expressions containing symbolic units of the same dimension by using simplify
.
u = symunit;expr = 300*u.cm + 40*u.inch + 2*u.m;S = simplify(expr)
S =
simplify
automatically chooses the unit to rewrite into. To choose a specific unit, use rewrite.
Get Simpler Result by Expanding Expression
Open Live Script
In most cases, to simplify a symbolic expression using Symbolic Math Toolbox™, you only need to use the simplify
function. But for some large and complex expressions, you can obtain a faster and simpler result by using the expand
function before applying simplify
.
For instance, this workflow gives better results when finding the determinant of a matrix that represents the Kerr metric [1]. Declare the parameters of the Kerr metric.
syms theta real;syms r rs a real positive;
Define the matrix that represents the Kerr metric.
rho = sqrt(r^2 + a^2*cos(theta)^2);delta = r^2 + a^2 - r*rs;g(1,1) = - (1 - r*rs/rho^2);g(1,4) = - (rs*a*r*sin(theta)^2)/rho^2;g(4,1) = - (rs*a*r*sin(theta)^2)/rho^2;g(2,2) = rho^2/delta;g(3,3) = rho^2;g(4,4) = (r^2 + a^2 + rs*a^2*r*sin(theta)^2/rho^2)*sin(theta)^2;
Evaluate the determinant of the Kerr metric.
det_g = det(g)
det_g =
Simplify the determinant using the simplify
function.
D = simplify(det_g)
D =
Instead, flatten the expression using the expand
function, and then apply the simplify
function. The result is simpler with this extra step.
D = simplify(expand(det_g))
D =
Input Arguments
collapse all
expr
— Input expression
symbolic expression | symbolic function | symbolic vector | symbolic matrix
Input expression, specified as a symbolic expression, function, vector, or matrix.
Name-Value Arguments
Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN
, where Name
is the argument name and Value
is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose Name
in quotes.
Example: 'Seconds',60
limits the simplificationprocess to 60 seconds.
All
— Option to return equivalent results
false
(default) | true
Option to return equivalent results, specified as the comma-separated pair consisting of 'All'
and either of the two logical values. When you use this option, the input argument expr
must be a scalar.
false | Use the default option to return only the final simplification result. |
true | Return a column vector of equivalent results for the input expression. You can use this option along with the 'Steps' option to obtain alternative expressions in the simplification process. |
Criterion
— Simplification criterion
'default'
(default) | 'preferReal'
Simplification criterion, specified as the comma-separated pairconsisting of 'Criterion'
and one of these charactervectors.
'default' | Use the default (internal) simplification criteria. |
'preferReal' | Favor the forms of S containing real valuesover the forms containing complex values. If any form of S containscomplex values, the simplifier disfavors the forms where complex valuesappear inside subexpressions. In case of nested subexpressions, thedeeper the complex value appears inside an expression, the least preferencethis form of an expression gets. |
IgnoreAnalyticConstraints
— Simplification rules
false
(default) | true
Simplification rules, specified as the comma-separated pairconsisting of 'IgnoreAnalyticConstraints'
and oneof these values.
false | Use strict simplification rules. simplify always returns results that are analytically equivalent to the initial expression. |
true | Apply purely algebraic simplifications to expressions. Setting IgnoreAnalyticConstraints to true can give you simpler solutions, which could lead to results not generally valid. In other words, this option applies mathematical identities that are convenient, but the results might not hold for all possible values of the variables. In some cases, the results might not be equivalent to the initial expression. For details, see Algorithms. |
Seconds
— Time limit for the simplification process
Inf
(default) | positive number
Time limit for the simplification process, specified as thecomma-separated pair consisting of 'Seconds'
anda positive value that denotes the maximal time in seconds.
Steps
— Number of simplification steps
1
(default) | positive number
Number of simplification steps, specified as the comma-separatedpair consisting of 'Steps'
and a positive valuethat denotes the maximal number of internal simplification steps.Note that increasing the number of simplification steps can slow downyour computations.
simplify(expr,'Steps',n)
is equivalent to simplify(expr,n)
, where n
is the number of simplification steps.
Tips
Simplification of mathematical expression is not aclearly defined subject. There is no universal idea as to which formof an expression is simplest. The form of a mathematical expressionthat is simplest for one problem might be complicated or even unsuitablefor another problem.
Algorithms
When you use IgnoreAnalyticConstraints
, then simplify
follows some of these rules:
log(a) + log(b)=log(a·b) for all values of a and b. In particular, the following equality is valid for all values of a, b, and c:
(a·b)c=ac·bc.
log(ab)=b·log(a) for all values of a and b. In particular, the following equality is valid for all values of a, b, and c:
(ab)c=ab·c.
If f and g are standard mathematical functions and f(g(x))=x for all small positive numbers, f(g(x))=x is assumed to be valid for all complex values of x. In particular:
log(ex)=x
asin(sin(x))=x, acos(cos(x))=x, atan(tan(x))=x
asinh(sinh(x))=x, acosh(cosh(x))=x, atanh(tanh(x))=x
Wk(x·ex)=x for all branch indices k of the Lambert W function.
References
[1] Zee, A. Einstein Gravity in a Nutshell. Princeton: Princeton University Press, 2013.
Version History
Introduced before R2006a
See Also
Functions
- collect | combine | expand | factor | horner | numden | rewrite | simplifyFraction
Live Editor Tasks
- Simplify Symbolic Expression
Topics
- Simplify Symbolic Expressions
- Choose Function to Rearrange Expression
- Simplify Symbolic Expressions Using Live Editor Task
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office