MathGroup Archive 2010

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

Search the Archive

Re: Write an expression in a specific form

  • To: mathgroup at smc.vnet.net
  • Subject: [mg108025] Re: Write an expression in a specific form
  • From: dh <dh at metrohm.com>
  • Date: Fri, 5 Mar 2010 04:35:13 -0500 (EST)
  • References: <hmo293$qbh$1@smc.vnet.net>

Hi Ares,
Mathematica really seems to have difficulties (that is I do not have the nerves 
to wait so long) with a calculation that can done by hand. It look like 
it needs some human help.
We may get an equation for the exponents with only 2 unknowns.
We denot by m1,s1 and m2,s2 the parameters of the given Gaussian. m3,s3 
and c3 denote the searched Gaussian: c4 G[m3,s3]. tmp is an intermediate 
result we are not interested in:
sol1 = Reduce[{ForAll[
     x, (x - m1)^2/(2 s1^2) + (x - m2)^2/(2 s2^2) ==
      tmp + (x - m3)^2/(2 s3^2)], s1 > 0, s2 > 0, s3 > 0}, {m3, s3, tmp},
    Reals]
this gives us m3,s3 and an intermediate result tmp. With this we may 
solve the equation for the pre factor. Toward this aim we change sol1 to 
rules and use it in the equation:
G[m1, s1, x] G[m2, s2, x] == c3  G[m3, s3, x] /. sol1 /. sol1
Note that in sol1 tmp is given in term of m3,s3. We must therefore apply 
/.sol1 twice.
I also delete some superfluous info from the result. Here is the whole code:
================
G[m_, s_, x_] := (1/(s*Sqrt[2*Pi]))*Exp[-(x - m)^2/(2*s^2)];
sol1 = Reduce[{ForAll[
      x, -((x - m1)^2/(2 s1^2)) - (x - m2)^2/(2 s2^2) ==
       tmp - (x - m3)^2/(2 s3^2)], s1 > 0, s2 > 0, s3 > 0}, {m3, s3,
     tmp}, Reals];
sol1 = Drop[sol1, 2] // ToRules
sol2 = Reduce[{G[m1, s1, x] G[m2, s2, x] == c3  G[m3, s3, x] /.
        sol1 /. sol1, s1 > 0, s2 > 0, s3 > 0, c3 > 0}, {c3},
     Reals][[4]] // ToRules
===============

Finally we may test if the calculation is correct:
G[m1, s1, x] G[m2, s2, x] == c4  G[m3, s3, x] /. sol2 /. sol1 /.
   sol1 // Simplify

Daniel

On 04.03.2010 11:33, Ares Lagae wrote:
> Hi all,
>
> I am a beginner in Mathematica, and I have the following "problem": How can
> I write an expression in a specific form?
>
> For example:
>
> - Define a Gaussian:
>
> G[m_, s_, x_] := (1/(s*Sqrt[2*Pi]))*Exp[-(x - m)^2/(2*s^2)];
>
> - Product of two Gaussians:
>
> G[m1, s1, x] * G[m2, s2, x]
>
> - How can I get Mathematica to write the result in terms of c * G[m_, s_,
> x_]? I.e., get the values for c, m and s.
>
> Thanks,
>
> Ares Lagae
>
>


-- 

Daniel Huber
Metrohm Ltd.
Oberdorfstr. 68
CH-9100 Herisau
Tel. +41 71 353 8585, Fax +41 71 353 8907
E-Mail:<mailto:dh at metrohm.com>
Internet:<http://www.metrohm.com>



  • Prev by Date: Re: What inspite FindInstance ?
  • Next by Date: Re: Select Maximum Value
  • Previous by thread: Write an expression in a specific form
  • Next by thread: Re: Re: Write an expression in a specific form