TRIG_TR8
This transformation applies product-to-sum identities to rewrite products of trigonometric terms into additive forms.
Representative identities include:
\cos(a)\cos(b)=\frac{\cos(a-b)+\cos(a+b)}{2}
\sin(a)\cos(b)=\frac{\sin(a+b)+\sin(a-b)}{2}
The first option controls preferred conversion ordering.
Excel Usage
=TRIG_TR8(expression, first)
expression(str, required): Expression with trig products to convert (expression string).first(bool, optional, default: true): Use first-pass preference for conversion choices (true/false).
Returns (str): Transformed expression as a string, or an error message.
Example 1: Converts cosine-cosine product to sum
Inputs:
| expression |
|---|
| cos(2)*cos(3) |
Excel formula:
=TRIG_TR8("cos(2)*cos(3)")
Expected output:
"cos(5)/2 + cos(1)/2"
Example 2: Converts cosine-sine product to sum
Inputs:
| expression |
|---|
| cos(2)*sin(3) |
Excel formula:
=TRIG_TR8("cos(2)*sin(3)")
Expected output:
"sin(5)/2 + sin(1)/2"
Example 3: Converts sine-sine product to cosine difference form
Inputs:
| expression |
|---|
| sin(2)*sin(3) |
Excel formula:
=TRIG_TR8("sin(2)*sin(3)")
Expected output:
"-cos(5)/2 + cos(1)/2"
Example 4: Runs conversion with first option disabled
Inputs:
| expression | first |
|---|---|
| cos(a)*cos(b) | false |
Excel formula:
=TRIG_TR8("cos(a)*cos(b)", FALSE)
Expected output:
"cos(a - b)/2 + cos(a + b)/2"
Python Code
from sympy import sympify
from sympy.simplify.fu import TR8 as sympy_tr8
def trig_tr8(expression, first=True):
"""
Convert products of sine and cosine terms into sum or difference forms.
See: https://docs.sympy.org/latest/modules/simplify/fu.html#sympy.simplify.fu.TR8
This example function is provided as-is without any representation of accuracy.
Args:
expression (str): Expression with trig products to convert (expression string).
first (bool, optional): Use first-pass preference for conversion choices (true/false). Default is True.
Returns:
str: Transformed expression as a string, or an error message.
"""
try:
expr_text = expression.replace("^", "**") if isinstance(expression, str) else expression
expr_obj = sympify(expr_text)
result = sympy_tr8(expr_obj, first=first)
return str(result)
except Exception as e:
return f"Error: {str(e)}"Online Calculator
Expression with trig products to convert (expression string).
Use first-pass preference for conversion choices (true/false).