Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I have a linear differential operator, for instance, $L\left (\partial _{t} \right )=\partial _{tt} - 3\partial _{t} + 2$. I use it in 2 different ways:

  • apply the operator to a function: $L\left (\partial _{t} \right )\sin(t)=-\sin(t)-3\cos(t)+2\sin(t)=\sin(t)-3\cos(t)$

  • find roots of the polynomial $L(p)=0$, in this case $p=1,p=2$

What is the best way to define such operator?

share|improve this question
2  
You should include in your question your attempts to define such an operator. What have you tried ? In any case take a look at this post where a dalambertian was defined : mathematica.stackexchange.com/questions/5434/…. Perhaps you know there are in Mathematica 9 new differential operators like Div, Curl, Laplacian etc. –  Artes Dec 3 '12 at 11:59
    
I am new to Mathematica, so my only guess was to create 2 distinct functions, one behaving like differential operator, other like a polynomial. I was wondering if there was a way to write it in 1 statement. –  prazuber Dec 3 '12 at 14:44
    
The section "Some noncommutative algebraic manipulation" in the notebook at this link might be useful for some of what you are trying to do. (probably not much help with factoring differential operators though). –  Daniel Lichtblau Dec 3 '12 at 16:05
    
A closely related question is Having the derivative be an operator –  Jens Dec 3 '12 at 18:17
add comment

2 Answers

up vote 13 down vote accepted

Define the operator as

op[t_]=(D[#,{t,2}]-3D[#,t]+2#)&

Then you get

op[t][Sin[t]]

(* -3 Cos[t]+Sin[t] *)

and also

op[t][Exp[p t]]/Exp[p t]//Factor

(* (-2+p) (-1+p) *)

where I have used that $\partial_t \exp(p t) = p\exp(p t)$ to "convert" the action of the operator $\partial_t$ into multiplication by $p$, and then I tidy up by dividing out the $\exp(p t)$ afterwards.

share|improve this answer
    
Thanks! Shame that it's a bit more complicated than I thought to get the roots of a polynomial, but that will work. –  prazuber Dec 3 '12 at 14:46
    
Try this: op[x, t][Exp[p t] Exp[q x]]/(Exp[p t] Exp[q x]) // Factor. The comment this addresses has disappeared. It was to do with how to handle the case where the operator depended on both t and x. –  Stephen Luttrell Dec 3 '12 at 15:10
    
Oh, I deleted it because I came up with a solution op[x,t][Exp[x t]]/Exp[x t], where I've actually gotten my polynomial, though with the variables that switched places. But your solution is much more generic, thanks again! –  prazuber Dec 3 '12 at 15:17
    
Re: your previous comment on getting the roots of a polynomial, Factor alone does that for you. The Exp trick/hack was for converting your particular operator-valued problem into an algebraic one, which Factor could then get to work on. –  Stephen Luttrell Dec 3 '12 at 15:25
add comment

The following slides are from a I talk I gave on implementing polynomial differential operators and teaching with them: http://www.cs.hmc.edu/~is/talks/JMM2011.nb

share|improve this answer
3  
Please consider adding some more information to your answer itself, should for example the .nb file become unavailable. Answers that are merely single links to an external resource are discouraged, no matter how good that resource may be. –  Mr.Wizard Dec 4 '12 at 13:38
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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