Not exactly sure how to do it. Unsuccessful in some cases. Need to re-read documentation.
Update: 'sin' or 'cos' will perform the same thing as rewrite(y, 'sincos').
syms x
y1 = sin(x + pi/2);
sin2cos = simplify(rewrite(expand(rewrite(y1, 'tan')), 'cos'))
sin2cos =
y2 = sin(x - pi/2);
sin2cos = simplify(rewrite(expand(rewrite(y2, 'tan')), 'cos'))
sin2cos =
y3 = sin(x - pi/4);
sin2cos = simplify(rewrite(expand(rewrite(y3, 'tanh')), 'cos'))
sin2cos =
help rewrite
REWRITE Rewrite symbolic expressions S in terms of target T.
REWRITE(S,T) rewrites the symbolic expression S in terms of
the target T. The target T is specified as one of the strings
'exp', 'log', 'sincos', 'sin', 'cos', 'tan', 'cot',
'sinhcosh', 'sinh', 'cosh', 'tanh', 'coth', 'asin',
'acos', 'atan', 'acot', 'asinh', 'acosh', 'atanh',
'acoth', 'sqrt', 'heaviside', 'piecewise'. The target T may
also be a symbolic unit or a vector of symbolic units.
REWRITE(S, T) with a symbolic unit S rewrites all symbolic
units in S in terms of the symbolic unit T. The target
T may also by a vector of symbolic units. In this case,
the units in S are rewritten involving some, but not
necessarily all, entries of T. If T is '1', the function
tries to convert a dimensionless unit into its numeric value.
T may also be name (string or character vector) of a unit
system such as 'SI', 'CGS' etc. In this case, the units
in S are rewritten in terms of the base units of the given
unit system.
REWRITE(S, T, 'Temperature', 'difference') treats all
temperature units in S as units of temperature differences.
REWRITE(S, T, 'Temperature', 'absolute') treats all
temperature units in S as units of absolute temperatures.
In this case, S must be a product of a dimensionless
symbolic object (such as a symbolic number or a variable)
and a symbolic temperature unit.
REWRITE(S,'exp') rewrites all trigonometric and hyperbolic
functions in terms of EXP. Furthermore, the inverse functions
are rewritten in terms of LOG.
REWRITE(S,'log') rewrites the functions ASIN, ACOS, ATAN, ACOT,
ASINH, ACOSH, ATANH, ACOTH, ARG in terms of LOG.
REWRITE(S,'sincos') rewrites the functions TAN, COT, EXP, SINH,
COSH, TANH and COTH in terms of SIN and COS.
REWRITE(S,'sin') does the same as REWRITE(S,'sincos'). In addition
to that, cos(x)^2 is rewritten as 1-sin(x)^2.
REWRITE(S,'cos') does the same as REWRITE(S,'sincos'). In addition
to that, sin(x)^2 is rewritten as 1-cos(x)^2.
REWRITE(S,'tan') rewrites the functions SIN, COS, COT, EXP, SINH,
COSH, TANH, COTH in terms of TAN.
REWRITE(S,'cot') rewrites the functions SIN, COS, EXP, SINH,
COSH, TANH, COTH in terms of COT.
REWRITE(S,'sinhcosh') rewrites the functions EXP, TANH, COTH, SIN,
COS, TAN and COT in terms of SINH and COSH.
REWRITE(S,'sinh') does the same as REWRITE(S,'sinhcosh'). In addition
to that, cosh(x)^2 is rewritten as sinh(x)^2 + 1.
REWRITE(S,'cosh') does the same as REWRITE(S,'sinhcosh'). In addition
to that, sinh(x)^2 is rewritten as cosh(x)^2 - 1.
REWRITE(S,'tanh') rewrites the functions SIN, COS, COT, EXP, SINH,
COSH, COTH in terms of TANH.
REWRITE(S,'coth') rewrites the functions SIN, COS, COT, EXP, SINH,
COSH, TANH in terms of COTH.
REWRITE(S,'asin') rewrites the functions LOG, ACOS, ATAN, ACOT,
ASINH, ACOSH, ATANH, ACOTH in terms of ASIN.
REWRITE(S,'acos') rewrites the functions LOG, ASIN, ATAN, ACOT,
ASINH, ACOSH, ATANH, ACOTH in terms of ACOS.
REWRITE(S,'atan') rewrites the functions LOG, ASIN, ACOS, ACOT,
ASINH, ACOSH, ATANH, ACOTH in terms of ATAN.
REWRITE(S,'acot') rewrites the functions LOG, ASIN, ACOS, ATAN,
ASINH, ACOSH, ATANH, ACOTH in terms of ACOT.
REWRITE(S,'asinh') rewrites the functions LOG, ASIN, ACOS, ATAN, ACOT,
ACOSH, ATANH, ACOTH in terms of ASINH.
REWRITE(S,'acosh') rewrites the functions LOG, ASIN, ACOS, ATAN, ACOT,
ASINH, ATANH, ACOTH in terms of ACOSH.
REWRITE(S,'atanh') rewrites the functions LOG, ASIN, ACOS, ATAN, ACOT,
ASINH, ACOSH, ACOTH in terms of ATANH.
REWRITE(S,'acoth') rewrites the functions LOG, ASIN, ACOS, ATAN, ACOT,
ASINH, ACOSH, ATANH in terms of ACOTH.
REWRITE(S,'sqrt') rewrites complex absolute values abs(x+i*y) as
sqrt(x^2 + y^2) if x and y are real symbolic expressions.
REWRITE(S,'heaviside') rewrites the function SIGN in terms of
HEAVISIDE.
REWRITE(S,'piecewise') rewrites the functions ABS, SIGN, and HEAVISIDE
in terms of PIECEWISE.
Examples:
u = symunit;
rewrite(1.234*u.cm, u.inch)
returns (617/1270)*[in]
rewrite(u.Newtonmeter, [u.Newton,u.inch])
returns (5000/127)*[N]*[in]
rewrite({0, u.Kelvin}, u.Celsius, 'Temperature', 'absolute')
returns -(5463/20)*[Celsius]
syms x;
rewrite(sin(x),'exp')
returns (exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2
rewrite((exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2,'sincos')
returns sin(x)
rewrite(asinh(x),'log')
returns log(x + (x^2 + 1)^(1/2))
rewrite((1/exp(x*i))*(1/2+i/2)+exp(x*i)*(1/2+(-i/2)), 'sincos')
returns cos(x) + sin(x)
rewrite(tan(x),'sin')
returns -sin(x)/(2*sin(x/2)^2 - 1)
rewrite(tan(x),'sincos')
returns sin(x)/cos(x)
rewrite(sym('sign(x)'),'heaviside')
returns 2*heaviside(x) - 1
syms x y real;
rewrite(abs(x+1i*y),'sqrt')
returns (x^2 + y^2)^(1/2)
See also SYMUNIT, SYM/SIMPLIFY, SYM/FACTOR, SYM/COLLECT,
SYM/SIMPLIFYFRACTION.
Documentation for rewrite
doc rewrite