Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Mathematica: Transistor Harmonic Derivations

  1. Sep 4, 2012 #1

    I am trying to derive the harmonic content of a signal passing through a transistor's transfer function. After a Taylor expansion in Mathematica 7, I have the expanded equation and the next step is to reduce everything to first order Sine/Cosine functions.

    In Mathematica, if I have a term like

    (A Sin (wt) )^3

    What function can I use to reduce this down? Doing it by hand it should look something like

    a Sin(wt) - b Sin(3wt) + c Sin(wt)

    where a,b,c are the collections of constants.
    Any idea how I can do this reduction in Mathematica? I can't seem to get/find a function like TrigReduce to do what I want.

    Thanks for any help.
  2. jcsd
  3. Sep 4, 2012 #2
    Mathematica often has its own idea about the form it wants things in and trying to force it to put it in the form you want can often be a frustrating experience.

    This can show you the coefficients without having to do it by hand, and without what I think might be a typo in what you said the result should be.

    In[1]:= Table[Integrate[Sin[n w t]A Sin[w t]^3,{t,0,2Pi/w}]/(Pi/w),{n,0,3}]

    Out[1]= {0, (3*A)/4, 0, -A/4}

    In[2]:= FullSimplify[3A/4Sin[w t]-A/4Sin[3 w t]==A Sin[w t]^3]

    Out[2]= True

    Only after I finished that did I grope around and discover this

    In[3]:= TrigReduce[A Sin[w t]^3]

    Out[3]= (3*A*Sin[t*w] - A*Sin[3*t*w])/4

    Note: You may find if your "A" is a large complicated collection of other things then this might confuse TrigReduce to the point where it will not do the transformation that you desire. If that is the case you may be able to use pattern matching and substitution to temporarily remove the large complicated collection, do the TrigReduce, and then put back the large complicated collection.
    Last edited: Sep 4, 2012
  4. Sep 4, 2012 #3
    Gah... I was using Sin() instead of Sin[]...

    I have TrigReduce working now, Thank you very much!!! Its always the little things haha

  5. Sep 4, 2012 #4
    I have been recommending for a long time that there be a new feature in Mathematica.

    This would make things
    like sin(x), sin[x], e^x, etc, etc, etc
    and many or most of the other simple errors like this


    Now if I could just make that blink I would be done.

    Just yesterday I spent twenty minutes trying to figure out why in the world someone's if-then-else code was actually executing BOTH the then and the else... Finally in two pages of tiny printed code I stumbled onto it was if[condition,then,else]. Did you notice that i in if wasn't capitalized? In two pages of dense code? And without a peep of an error message? And it wasn't RED BLINKING TEXT! To find that I had to put Print statements all over in the code until I was able to even see both then and else were being executed and then moving the Prints around until I finally stumbled onto the reason. He had wasted a day trying to figure this out. There is no excuse for the software not pointing this out.
    Last edited: Sep 4, 2012
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook