# Simplifying trigonometric expressions in \`Symbolics\` and \`SymbolicUtils\`

**URL:** <https://discourse.julialang.org/t/simplifying-trigonometric-expressions-in-symbolics-and-symbolicutils/132160>\
**Category:** General Usage\
**Tags:** symbolics, symbolic-utils\
**Created:** [September 7, 2025, 8:29pm UTC](https://discourse.julialang.org/t/simplifying-trigonometric-expressions-in-symbolics-and-symbolicutils/132160 "2025-09-07T20:29:44Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Shuvomoy\_Das\_Gupta](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shuvomoy_das_gupta/32/10069_2.png) [@Shuvomoy\_Das\_Gupta](https://discourse.julialang.org/u/Shuvomoy_Das_Gupta)\
**Post date:** [September 7, 2025, 8:29pm UTC](https://discourse.julialang.org/t/simplifying-trigonometric-expressions-in-symbolics-and-symbolicutils/132160/1 "2025-09-07T20:29:44Z")

</div>

Hi, I am new to `Symbolics.jl` and trying to verify the following trigonometric expression arising in energy system using the package:

\begin{align\*} v\_k(t) &= \bar{V} \cos(\omega t + \phi\_k) \\ i\_k(t) &= \bar{I} \cos(\omega t + \phi\_k - \psi) \\ v\_k(t) \times i\_k(t) &= \frac{\bar{V}\bar{I}}{2}\cos(\psi)(1 + \cos(2(\omega t + \phi\_k))) + \frac{\bar{V}\bar{I}}{2}\sin(\psi)\sin(2(\omega t + \phi\_k)) \end{align\*}

Verifying such trigonometric identities are very easy in `Wolfram Mathematica`:

```mathematica
(*Define voltage and current waveforms*)
vk[t_] := Vbar Cos[ω t + ϕk];
ik[t_] := Ibar Cos[ω t + ϕk - ψ];

(*Define instantaneous power as their product*)
pk[t_] := vk[t] ik[t];

(*Use TrigReduce to expand the product of cosines*)
expandedProduct = TrigReduce[pk[t]];

(*Define the target expression from the screenshot*)
targetExpression[
   t_] := (Vbar Ibar/2) Cos[ψ] (1 + 
      Cos[2 (ω t + ϕk)]) + (Vbar Ibar/
       2) Sin[ψ] Sin[2 (ω t + ϕk)];
	   
(*Verify if both terms are equal*)	   
Simplify[pk[t] - targetExpression[t]]

```

which outputs 0. However, when I try in Julia:

```julia
using Symbolics, SymbolicUtils

@variables t Vbar Ibar ω φk ψ

vk(t) = Vbar * cos(ω*t + φk)
ik(t) = Ibar * cos(ω*t + φk - ψ)
pk(t) = vk(t) * ik(t)
expandedProduct = simplify(pk(t), expand=true)
targetExpression(t) = (Vbar * Ibar / 2) * cos(ψ) * (1 + cos(2 * (ω*t + φk))) +
                      (Vbar * Ibar / 2) * sin(ψ) * sin(2 * (ω*t + φk))
difference = pk(t) - targetExpression(t)
simplified_difference = simplify(difference, expand=true)

```

The output is `-(1//2)*Ibar*Vbar*cos(ψ) + Ibar*Vbar*cos(φk + t*ω)*cos(φk - ψ + t*ω) - (1//2)*Ibar*Vbar*sin(2φk + 2t*ω)*sin(ψ) - (1//2)*Ibar*Vbar*cos(2φk + 2t*ω)*cos(ψ)`. Is there any function similar to `TrigExpand` in Julia? Any tips regarding how to simplify the term in `Symbolics` will be much appreciated.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [September 7, 2025, 10:33pm UTC](https://discourse.julialang.org/t/simplifying-trigonometric-expressions-in-symbolics-and-symbolicutils/132160/2 "2025-09-07T22:33:42Z")

</div>

Just open an issue, the simplifer is probably missing a rule.
