MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Separating functions

Am 21.10.2012 08:10, schrieb carlos at
> Hi,
> I have a problem in identification.  In the middle of the solution of a wave propagation problem on a regular lattice using a separation-of-variables method, I get a function of the form
>                 F(x,y,t)= f(x,y) g(t)
> in which x,y are space coordinates and t is time.

> Both can be very complicated and vary from problem to problem, but Mathematica' Simplify is able to factor them. Here is a fairly trivial 1D example with an F output by //InputForm:
>        Bx*(-5*Em - 3*Em*=CE=BD + 2*a^2*=CF=81*=CF=89^2 - 2*a^2*=CE=BD^2*=CF=81*=CF=89^2 + 4*Em*(1 + =CE=BD)*Cos[(a*kx)/
>            Sqrt[2]] - Em*(-1 + =CE=BD)*Cos[Sqrt[2]*a*kx])*(Cos[t*=CF=89] - I*Sin[t*=CF=89]))/(2*c0^2*(-1 + =CE=BD^2)*=CF=81)
> Here g(t)=(Cos[t*=CF=89] - I*Sin[t*=CF=89])). For more complicated 2D cases, F(x,y,t) becomes a array of product functions, each taking 20-30 lines.
> Question: is there a way to separate  f(x,y) and g(t) that does not require external intervention?

Trivially, a separating factor can be fixed by setting the variable t to 
a fixed value, most commonly the starting value

Assuming[0 < {t,x,y} < 1,
    g[t_]=FullSimplify[F[t,x,y]/f[x,y]  ]

With logs and trig functions sometimes more sophisticated methods using 
FunctionExpand, TrigToExp, ComplexExpand will be necessary to separate 
products like Exp(i omega t ) Exp(x/lambda) or Sin[omega t] Cos[phi] to 
their most simple forms.

Another way working independently of the art of algebraic factoring 
processes is to take the linear coefficient (or any of the higher order 
ones) of the Taylor expansion of F in the separating variable t

(f[x_,y_] =
   FullSimplify[ Coefficient[Normal[Series[F[t,x,y],{t,0,1}]], 1]];
g[t_] = FullSimplify[F[t,x,y]/f[x,y] ]  )]

Probably it pays to search for a most trival algebraic expression of the 
expansion point t-> t0, where a maximum of subexpressions disappear or 
cancel from the constant expression g[t0].


Roland Franzius

  • Prev by Date: Separating functions
  • Next by Date: Re: How to convert the expression 3*x to a function in Mathematica?
  • Previous by thread: Separating functions
  • Next by thread: Re: Separating functions