Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

rewrite

Rewrite expression in terms of another function

Syntax

rewrite(expr,target)

Description

example

rewrite(expr,target) rewrites the symbolic expression expr in terms of the target function target. The rewritten expression is mathematically equivalent to the original expression. If expr is a vector or matrix, rewrite acts element-wise on expr.

Examples

Rewrite Between Trigonometric and Exponential Functions

Rewrite any trigonometric function in terms of the exponential function by specifying the target 'exp'.

syms x
sin2exp = rewrite(sin(x), 'exp')
tan2exp = rewrite(tan(x), 'exp')
sin2exp =
(exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2

tan2exp =
-(exp(x*2i)*1i - 1i)/(exp(x*2i) + 1)

Rewrite the exponential function in terms of any trigonometric function by specifying the trigonometric function as the target. For a full list of targets, see target.

syms x
exp2sin = rewrite(exp(x), 'sin')
exp2tan = rewrite(-(exp(x*2i)*1i - 1i)/(exp(x*2i) + 1), 'tan')
exp2sin =
1 - 2*sin((x*1i)/2)^2 - sin(x*1i)*1i
exp2tan =
-(((tan(x) - 1i)*1i)/(tan(x) + 1i) + 1i)/((tan(x) - 1i)/(tan(x) + 1i) - 1)

Simplify exp2tan into the expected form by using simplify.

exp2tan = simplify(exp2tan)
exp2tan =
tan(x)

Rewrite Between Trigonometric Functions

Rewrite any trigonometric function in terms of any other trigonometric function by specifying the target. For a full list of targets, see target.

Rewrite tan(x) in terms of the sine function by specifying the target 'sin'.

syms x
tan2sin = rewrite(tan(x), 'sin')
tan2sin =
-sin(x)/(2*sin(x/2)^2 - 1)

Rewrite Between Hyperbolic Functions and Trigonometric Functions

Rewrite any hyperbolic function in terms of any trigonometric function by specifying the trigonometric function as the target. For a full list of targets, see target.

Rewrite tanh(x) in terms of the sine function by specifying the target 'sin'.

syms x
tanh2sin = rewrite(tanh(x), 'sin')
tanh2sin =
(sin(x*1i)*1i)/(2*sin((x*1i)/2)^2 - 1)

Similarly, rewrite trigonometric functions in terms of hyperbolic functions by specifying the hyperbolic function as the target.

Rewrite Between Inverse Trigonometric Functions and Logarithm Function

Rewrite any inverse trigonometric function in terms of the logarithm function by specifying the target 'log'. For a full list of targets, see target.

Rewrite acos(x) and acot(x) in terms of the log function.

syms x
acos2log = rewrite(acos(x), 'log')
acot2log = rewrite(acot(x), 'log')
acos2log =
-log(x + (1 - x^2)^(1/2)*1i)*1i

acot2log =
(log(1 - 1i/x)*1i)/2 - (log(1i/x + 1)*1i)/2

Similarly, rewrite the logarithm function in terms of an inverse trigonometric function by specifying the inverse trigonometric function as the target.

Rewrite Elements of Matrix

Rewrite each element of a matrix by calling rewrite on the matrix.

Rewrite all elements of a matrix in terms of the exp function.

syms x
matrix = [sin(x) cos(x); sinh(x) cosh(x)];
rewrite(matrix, 'exp')
ans =
[ (exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2, exp(-x*1i)/2 + exp(x*1i)/2]
[                 exp(x)/2 - exp(-x)/2,       exp(-x)/2 + exp(x)/2]

Rewrite Between Sine and Cosine Functions

Rewrite the cosine function in terms of the sine function. Here, rewrite replaces the cosine function using the identity cos(2*x) = 1 – 2*sin(x)^2 which is valid for any x.

syms x
rewrite(cos(x),'sin')
ans =
1 - 2*sin(x/2)^2

rewrite does not replace sin(x) with either 1cos2(x) or 1cos2(x) because these expressions are not valid for all x. However, using the square of these expressions to replace sin(x)^2 is valid for all x. Thus, rewrite replaces sin(x)^2.

syms x
rewrite(sin(x),'cos')
rewrite(sin(x)^2,'cos')
ans =
sin(x)
ans =
1 - cos(x)^2

Rewrite Between Symbolic Units

Rewrite a symbolic unit to another unit by using rewrite. You can also rewrite to SI units.

Rewrite 5 cm in terms of inches.

u = symunit;
length = 5*u.cm;
length = rewrite(length,u.in)
length =
(250/127)*[in]

Rewrite length in terms of SI units. The result is in meters.

length = rewrite(length,'SI')
length =
(1/20)*[m]

By default, temperatures are assumed to represent temperature differences. To rewrite between absolute temperatures, specify the Temperature input as 'absolute'.

Rewrite 23 degrees Celsius to degrees Kelvin, treating it first as a temperature difference and then as an absolute temperature.

u = symunit;
T = 23*u.Celsius;
relK = rewrite(T,u.K,'Temperature','difference')
relK =
23*[K]
absK = rewrite(T,u.K,'Temperature','absolute')
absK =
(5923/20)*[K]

Input Arguments

collapse all

Input to rewrite, specified as a symbolic number, variable, expression, function, vector, matrix, or multidimensional array.

Target function, specified as a character vector. This table summarizes the rewriting rules for all allowed targets.

TargetRewrites these FunctionsIn Terms of these Functions
'exp'All trigonometric and hyperbolic functions including inverse functionsexp, log
'log'All inverse trigonometric and hyperbolic functionslog
'sincos'tan, cot, exp, sinh, cosh, tanh, cothsin, cos
'sin', 'cos', 'tan', or 'cot'sin, cos, exp, tan, cot, sinh, cosh, tanh, coth except the targetTarget trigonometric function
'sinhcosh'tan, cot, exp, sin, cos, tanh, cothsinh, cosh
'sinh', 'cosh', 'tanh', 'coth'tan, cot, exp, sin, cos, sinh, cosh, tanh, coth except the targetTarget hyperbolic function
'asin', 'acos', 'atan', 'acot'log, and all inverse trigonometric and inverse hyperbolic functionsTarget inverse trigonometric function
'asinh', 'acosh', 'atanh', 'acoth'log, and all inverse trigonometric and inverse hyperbolic functionsTarget inverse hyperbolic function
'sqrt'abs(x + 1i*y)sqrt(x^2 + y^2)
'heaviside'sign, triangularPulse, rectangularPulseheaviside
'piecewise'abs, heaviside, sign, triangularPulse, rectangularPulsepiecewise
Symbolic unitUnitsTarget unit

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: rewrite(23*u.Celsius,u.K,'Temperature','absolute')

collapse all

Assume temperatures represent absolute temperatures or temperature differences, specified as 'difference' or 'absolute'. The Temperature argument only has an effect when rewriting between units of temperature.

Tips

  • rewrite replaces symbolic function calls in expr with the target function only if the replacement is mathematically valid. Otherwise, it keeps the original function calls.

Introduced in R2012a

Was this topic helpful?