Mathematica: Transistor Harmonic Derivations

  • Mathematica
  • Thread starter vadar
  • Start date
  • #1
16
0

Main Question or Discussion Point

Hello,

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.
 

Answers and Replies

  • #2
1,069
29
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:
  • #3
16
0
Gah... I was using Sin() instead of Sin[]...

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

Cheers
 
  • #4
1,069
29
Gah... I was using Sin() instead of Sin[]...
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

BIG RED BLINKING TEXT!

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:

Related Threads on Mathematica: Transistor Harmonic Derivations

Replies
3
Views
6K
  • Last Post
Replies
2
Views
2K
Replies
9
Views
2K
Replies
6
Views
10K
Replies
2
Views
10K
Replies
3
Views
2K
Replies
10
Views
11K
Top