9
$\begingroup$

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:

Eliminate[
 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]}]

--------Edit--------

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.

$\endgroup$
3
  • 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$ Jan 28, 2012 at 21:38
  • $\begingroup$ I have added an example! $\endgroup$
    – JT_NL
    Jan 28, 2012 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, 2012 at 22:58

3 Answers 3

13
$\begingroup$

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

In[340]:= 
PolynomialReduce[1 - Cos[α], t[1] - π (1 - Cos[α]), 
  Cos[α]][[2]]

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.

In[348]:= 
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.

In[351]:= 
PolynomialReduce[
  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, 
    Cos[Subscript[α, 
       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 ---

$\endgroup$
8
  • $\begingroup$ Yeah, Gröbner was the first thing that came to mind when I saw this question. +1, of course. $\endgroup$ Jan 28, 2012 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$
    – JT_NL
    Jan 29, 2012 at 18:02
  • $\begingroup$ @JonasTeuwen can you describe this in detail in your question? $\endgroup$ Jan 29, 2012 at 18:13
  • $\begingroup$ @VitaliyKaurov I have done so! $\endgroup$
    – JT_NL
    Jan 29, 2012 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$ Jan 29, 2012 at 22:15
5
$\begingroup$

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.

$\endgroup$
5
$\begingroup$

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.

$\endgroup$
3
  • $\begingroup$ Yes, but the substitution can be harder than just filling in. There might be some algebra required. Will this then work? $\endgroup$
    – JT_NL
    Jan 28, 2012 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$ Jan 28, 2012 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$
    – JT_NL
    Jan 28, 2012 at 22:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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