algebraic simplification of
S = simplify(
is a symbolic vector or matrix, this function simplifies each element of
Simplify these symbolic expressions:
syms x a b c S = simplify(sin(x)^2 + cos(x)^2)
S = simplify(exp(c*log(sqrt(a+b))))
Simplify Matrix Elements
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 x M = [(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)
Get Simpler Results for Logarithms and Powers
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 x expr = (log(x^2 + 2*x + 1) - log(x + 1))*sqrt(x^2); S = simplify(expr)
To apply the simplification rules that allow the
simplify function to combine powers and logarithms, set
S = simplify(expr,'IgnoreAnalyticConstraints',true)
Get Simpler Results Using More Simplification Steps
Simplify this expression:
syms x expr = ((exp(-x*1i)*1i) - (exp(x*1i)*1i))/(exp(-x*1i) + exp(x*1i)); S = simplify(expr)
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)
S30 = simplify(expr,'Steps',30)
S50 = simplify(expr,'Steps',50)
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
Get equivalent results for a symbolic expression by setting the value of
syms x expr = cos(x)^2 - sin(x)^2; S = simplify(expr,'All',true)
Increase the number of simplification steps to 10. Find the other equivalent results for the same expression.
S = simplify(expr,'Steps',10,'All',true)
Separate Real and Imaginary Parts
Attempt to separate real and imaginary parts of an expression by setting the value of
syms x f = (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)
'Criterion' is not set to
simplify returns a shorter result but the real and imaginary parts are not separated.
S = simplify(f,'Steps',100)
When you set
'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
Attempt to avoid imaginary terms in exponents by setting
Show this behavior by simplifying a complex symbolic expression with and without setting
'Criterion' is set to
simplify places the imaginary term outside the exponent.
expr = sym(1i)^(1i+1); withoutPreferReal = simplify(expr,'Steps',100)
withPreferReal = simplify(expr,'Criterion','preferReal','Steps',100)
Simplify expressions containing symbolic units of the same dimension by using
u = symunit; expr = 300*u.cm + 40*u.inch + 2*u.m; S = simplify(expr)
simplify automatically chooses the unit to rewrite into. To choose a specific unit, use
Get Simpler Result by Expanding Expression
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
For instance, this workflow gives better results when finding the determinant of a matrix that represents the Kerr metric . 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)
Simplify the determinant using the
D = simplify(det_g)
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))
expr — Input expression
symbolic expression | symbolic function | symbolic vector | symbolic matrix
Input expression, specified as a symbolic expression, function, vector, or matrix.
Specify optional pairs of arguments as
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.
'Seconds',60 limits the simplification
process to 60 seconds.
All — Option to return equivalent results
false (default) |
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.
|Use the default option to return only the final simplification result.|
|Return a column vector of equivalent results for the
input expression. You can use this option along with the
Criterion — Simplification criterion
'default' (default) |
Simplification criterion, specified as the comma-separated pair
'Criterion' and one of these character
|Use the default (internal) simplification criteria.|
|Favor the forms of |
IgnoreAnalyticConstraints — Simplification rules
false (default) |
Simplification rules, specified as the comma-separated pair
'IgnoreAnalyticConstraints' and one
of these values.
|Use strict simplification rules. |
|Apply purely algebraic simplifications to expressions. Setting
Seconds — Time limit for the simplification process
Inf (default) |
Time limit for the simplification process, specified as the
comma-separated pair consisting of
a positive value that denotes the maximal time in seconds.
Steps — Number of simplification steps
1 (default) |
Number of simplification steps, specified as the comma-separated
pair consisting of
'Steps' and a positive value
that denotes the maximal number of internal simplification steps.
Note that increasing the number of simplification steps can slow down
simplify(expr,'Steps',n) is equivalent to
the number of simplification steps.
Simplification of mathematical expression is not a clearly defined subject. There is no universal idea as to which form of an expression is simplest. The form of a mathematical expression that is simplest for one problem might be complicated or even unsuitable for another problem.
When you use
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.
 Zee, A. Einstein Gravity in a Nutshell. Princeton: Princeton University Press, 2013.