Re: Factorising operators??
- To: mathgroup at smc.vnet.net
- Subject: [mg30990] Re: Factorising operators??
- From: "Andrzej Kozlowski" <andrzej at bekkoame.ne.jp>
- Date: Sat, 29 Sep 2001 20:43:34 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I think the easiest way is as follows: In[1]:= Unprotect[Plus]; In[2]:= (m_:1) a[x] +(n_:1)b[x_]+c_:0 :=(m a + n b+c)[x] In[3]:= Protect[Plus]; In[4]:= 3a[x]+5b[x]+2 Out[4]= (2+3 a+5 b)[x] In[5]:= a[x]+5b[x] Out[5]= (a+5 b)[x] One should always think twice before modifying such basic built in functions as Plus. You might therefore prefer to use a different approach. You might for example define a function f, that will transform your expression only when you apply f to it: In[2]:= f[(m_:1) a[x] +(n_:1)b[x_]+c_:0] :=(m a + n b+c)[x] In[3]:= f[3a[x]+5b[x]+2] Out[3]= (2+3 a+5 b)[x] Or you might even find it convenient to use f as a transformation function in Simplify: In[6]:= Simplify[3a[x]+5b[x]+2,TransformationFunctions->{Automatic,f}] Out[6]= (2+3 a+5 b)[x] Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ On Friday, September 28, 2001, at 04:55 PM, Mat Bowen wrote: > Hello, > > I'm new to mathematica and looking for help with the following: > > I have two operators, a and b, that function as approximations to first > and > second order derivatives. I can write (a+b)[x] and then use > Through[%,Plus] > to generate a[x]+b[x] but I want to do the reverse, ie. Get mathematica > to > output (a+b)[x] if I give it a[x]+b[x]. Is there any way (preferably > simple) > to do this which will also work with more general cases ie. > a[x]+5b[x]+const > c[x] should produce (a+5b+const)[x] > > Thanks, > Mat Bowen > > >