First of all: I'm new to Mathematica, so I would appreciate it if the answers are quite complete.

I have the result of calculation that is expressed in $\sin$ and $\cos$. Now, all of these can be rewritten in terms of the values $T_j = \frac\pi{j} (1 - \cos^j(\alpha_\text{max})$). So now my question is, how do I "translate" for example $1 - \cos(\alpha_{\text{max}})$ to $T_1$ using Mathematica? Of course, it sometimes requires some goniometric formulas.

I have tried to use the function Eliminate but it gives me a lot of garbage.

A minimal example:

 Join[{g == 
    1/3*Pi*(Subscript[v, y]^2*Cos[Subscript[α, max]]^3 - 
       2*Subscript[v, z]^2*Cos[Subscript[α, max]]^3 - 
       3*Subscript[v, y]^2*Cos[Subscript[α, max]] + 
       2*Subscript[v, z]^2 + 2*Subscript[v, y]^2)}, 
  Table[Subscript[t, i] ==  
    Pi/i (1 - Cos[Subscript[α, max]]^i), {i, 1, 
    5}]], {Subscript[α, max]}]


Following Daniel Lichtblau's code I want to write the following result of an integral in terms of the $T_i$: $\frac16 k^2 \pi [8 - 9 \cos(\alpha_{\text{max}}) + \cos(3 \alpha_{\text{max}})] v_y$. Maple computes this as $\frac23 k^2 [2 + \cos( \alpha_{\text{max}})^3 - 3 \cos(\alpha_{\text{max}})]v_y$ and a FullSimplify tells me that these expressions are actually the same. So, some visual inspection tells me that this is $2(T_1 - T_3)v_y$.

However, the PolynomialReduce yields $\frac16 [-k^2 \pi v_y + k^2 \pi \cos(3 \alpha_{\text{max}}) v_y + 9 k^2 T_1 v_y]$ which is clearly not what I want.

  • 1
    $\begingroup$ A prior question might be how to translate the TeX to Mathematica (either mentally or via software). This might or might not be what was intended. ToExpression["$T_j = \\frac\\pi{j} (1- \\cos^j(\\alpha_\t\ ext{max}))$", TeXForm] (but why should I have to guess?) $\endgroup$ – Daniel Lichtblau Jan 28 '12 at 21:38
  • $\begingroup$ I have added an example! $\endgroup$ – Jonas Teuwen Jan 28 '12 at 21:48
  • 1
    $\begingroup$ @Daniel Pasting MathML seems to be more reliable than LaTeX. Right click the math, choose Format -> MathML, then Show source, then copy the MathML and just paste as-is into Mma. After a bit of fixup, it should be evaluatable (if you're lucky). I'll go to meta now and make a suggestion to have a FAQ item about not pasting code as LaTeX. $\endgroup$ – Szabolcs Jan 28 '12 at 22:58

I'm not really clear on the scope of the question, but this might provide a start.

PolynomialReduce[1 - Cos[α], t[1] - π (1 - Cos[α]), 

Out[340]= t[1]/π

--- edit ---

Here is your example. I change equations to expressions in effect by taking differences. I create a Groebner basis for the defining expressions; that might not be necessary in this example. I order variables so that the one to be eliminated, Cos[alpha-sub-max], is highest. Your Eliminate came close but I think you'd really need to use Cos[alpha...] instead of just the alpha.

vars = Join[{Cos[Subscript[α, max]]}, 
   Table[Subscript[t, i], {i, 1, 5}]];
polys = Table[
   Subscript[t, i] == Pi/i (1 - Cos[Subscript[α, max]]^i), {i, 
    1, 5}];
gb = GroebnerBasis[polys, vars];

Now we can use PolynomialReduce to rewrite the expression of interest, replacing wherever possible that cosine with variables lower in the term order.

  1/3*Pi*(Subscript[v, y]^2*Cos[Subscript[α, max]]^3 - 
     2*Subscript[v, z]^2*Cos[Subscript[α, max]]^3 - 
     3*Subscript[v, y]^2*Cos[Subscript[α, max]] + 
     2*Subscript[v, z]^2 + 2*Subscript[v, y]^2), gb, vars][[2]]

Out[351]= Subscript[t, 1]*Subscript[v, y]^2 - 
 Subscript[t, 3]*Subscript[v, y]^2 + 
   2*Subscript[t, 3]*Subscript[v, z]^2

--- end edit ---

--- edit 2 ---

I saw (but no longer can locate) a comment asking about situations where there are related variables such as Sin[Subscript[α, max]/2]. This poses two wrinkles. First is that one will need to work with the smallest fractional angle in order to have polynomial relations between all such angles that can be algebraically related. The second is that one must also add the obvious trig relations such as Sin[XXX]^2+Cos[XXX]^2-1 where XXX is this smallest fractional angle. (Actually I am not sure if this relation must be added, or if GroebnerBasis preprocessing will figure that out for you. Assume it must be added by hand and you won't go too far astray.)

--- end edit 2 ---

--- edit 3 ---

Elaborating on edit 2 using an example from a comment, we use more trig variables and relationship polynomials.

In[74]:= vars = 
  Join[{Sin[Subscript[α, max]/2], 
    Cos[Subscript[α, max]/2], Sin[Subscript[α, max]], 
    Cos[Subscript[α, max]]}, Table[Subscript[t, i], {i, 1, 5}]];
polys = Join[{Cos[Subscript[α, max]]^2 + 
     Sin[Subscript[α, max]]^2 - 1, 
    Cos[Subscript[α, max]/2]^2 + 
     Sin[Subscript[α, max]/2]^2 - 1, 
       max]] - (Cos[Subscript[α, max]/2]^2 - 
       Sin[Subscript[α, max]/2]^2), 
    Sin[Subscript[α, max]] - 
     2*Cos[Subscript[α, max]/2]*
      Sin[Subscript[α, max]/2]}, 
   Table[Subscript[t, i] - 
     Pi/i (1 - Cos[Subscript[α, max]]^i), {i, 1, 5}]];
gb = GroebnerBasis[polys, vars];

In[66]:= p1 = 
  4/3*k^2*Sin[Subscript[α, max]/2]^4*(3*Pi - t[1])*
   Subscript[v, y];

In[80]:= PolynomialReduce[p1, gb, vars][[2]]

Out[80]= -((2*(-3*k^2*Pi*Subscript[t, 1]*Subscript[v, y] + 
       3*k^2*Pi*Subscript[t, 2]*
              Subscript[v, y] + 
       k^2*Subscript[t, 1]*Subscript[v, y]*t[1] - 
            k^2*Subscript[t, 2]*Subscript[v, y]*t[1]))/(3*Pi))

Here is another requested example. In this case preprocessing with TrigExpand causes a multiple angle trig term to disappear, allowing the polynomial replacement to work to its fullest capability.

In[91]:= p2 = 
  1/6*k^2 Pi*(8 - 9*Cos[Subscript[α, max]] + 
     Cos[3*Subscript[α, max]])*Subscript[v, y];

In[92]:= PolynomialReduce[p2 // TrigExpand, gb, vars][[2]]

Out[92]= 2*(k^2*Subscript[t, 1]*Subscript[v, y] - 
   k^2*Subscript[t, 3]*Subscript[v, y])

--- end edit 3 ---

  • $\begingroup$ Yeah, Gröbner was the first thing that came to mind when I saw this question. +1, of course. $\endgroup$ – J. M.'s torpor Jan 28 '12 at 23:23
  • $\begingroup$ Thanks! One issue. There are some integrals that I can compute by hand that give as result for example $(T_1 - T_3)v_y$. However, Mathematica doesn't seem to be able to find this. It yields: $\frac43 k^2 \sin(\frac{\alpha_{\text{max}}}{2})^4(3 \pi - T_1)v_y$. How can I fix this? It does work for simpler expressions. $\endgroup$ – Jonas Teuwen Jan 29 '12 at 18:02
  • $\begingroup$ @JonasTeuwen can you describe this in detail in your question? $\endgroup$ – Vitaliy Kaurov Jan 29 '12 at 18:13
  • $\begingroup$ @VitaliyKaurov I have done so! $\endgroup$ – Jonas Teuwen Jan 29 '12 at 18:53
  • $\begingroup$ I cannot fathom this fascination with posting in a form that I cannot cut and paste. I'm now wasting time trying to transliterate. $\endgroup$ – Daniel Lichtblau Jan 29 '12 at 22:15

You can try using the substitutions

{Power[Cos[a], j_] -> Pi - j*T[j],Cos[a] -> Pi - T[1]} 

you make the substitution to an expression, say expr, with the command

expr/. {Power[Cos[a], j_] -> Pi - j*T[j], Cos[a] -> Pi - T[1]} 

Of course, for this to work the expression must contain only powers of Cos, otherwise you'll have to you Simplify in conjunction with the option ComplexityFunction to force the expression to have only powers of Cos. I hope it helped.


Using your code:

orig = g == 
  1/3*Pi*(Subscript[v, y]^2*Cos[Subscript[\[Alpha], max]]^3 - 
     2*Subscript[v, z]^2*Cos[Subscript[\[Alpha], max]]^3 - 
     3*Subscript[v, y]^2*Cos[Subscript[\[Alpha], max]] + 
     2*Subscript[v, z]^2 + 2*Subscript[v, y]^2)

Do this:

Simplify[orig /. {Cos[Subscript[\[Alpha], max]]^j_ -> 1 - j Subscript[T, j]/Pi, 
Cos[Subscript[\[Alpha], max]] -> 1 - Subscript[T, 1]/Pi}]

To get

enter image description here

The front end typesetting makes this more comprehensible - here is a snapshot of my notebook:

enter image description here

This will work only if the original expression is already given in terms of Cos[...]. Otherwise you may need to jump through hoops a bit more.

  • $\begingroup$ Yes, but the substitution can be harder than just filling in. There might be some algebra required. Will this then work? $\endgroup$ – Jonas Teuwen Jan 28 '12 at 21:54
  • $\begingroup$ @JonasTeuwen Sure, Mathematica has a lot of built in algebraic, trigonometric etc. manipulation functions. Like that FullSimplify at the end in my code. $\endgroup$ – Vitaliy Kaurov Jan 28 '12 at 21:59
  • $\begingroup$ Great! This is what I'm looking for. I'll study the other answers as well before I accept this one. $\endgroup$ – Jonas Teuwen Jan 28 '12 at 22:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.