Re: Re: Write an expression in a specific form
- To: mathgroup at smc.vnet.net
- Subject: [mg108062] Re: [mg108014] Re: [mg107952] Write an expression in a specific form
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Sun, 7 Mar 2010 05:08:43 -0500 (EST)
- References: <4977982.1267699026953.JavaMail.root@n11>
- Reply-to: drmajorbob at yahoo.com
Here's the same thing a TAD simpler. (I just trusted Integrate to do its job.) g[m_, s_, x_] = PDF[NormalDistribution[m, s]][x] E^(-((-m + x)^2/(2 s^2)))/(Sqrt[2 \[Pi]] s) c = Integrate[g[m1, s1, x] g[m2, s2, x], {x, -Infinity, Infinity}, Assumptions -> {s1 > 0, s2 > 0}] E^(-((m1 - m2)^2/(2 (s1^2 + s2^2))))/(Sqrt[2 \[Pi]] Sqrt[s1^2 + s2^2]) Checking that we have a PDF: Integrate[1/c g[m1, s1, x] g[m2, s2, x], {x, -Infinity, Infinity}, Assumptions -> {s1 > 0, s2 > 0}] 1 If that's the PDF, here's the mean: m = Integrate[x/c g[m1, s1, x] g[m2, s2, x], {x, -Infinity, Infinity}, Assumptions -> {s1 > 0, s2 > 0}] (m2 s1^2 + m1 s2^2)/(s1^2 + s2^2) And here's the standard deviation: s = Sqrt@Integrate[(x - m)^2/c g[m1, s1, x] g[m2, s2, x], {x, -Infinity, Infinity}, Assumptions -> {s1 > 0, s2 > 0}] // PowerExpand (s1 s2)/Sqrt[s1^2 + s2^2] Verifying equality: g[m1, s1, x] g[m2, s2, x] - c g[m, s, x] // Simplify 0 Bobby On Sat, 06 Mar 2010 16:34:03 -0600, DrMajorBob <btreat1 at austin.rr.com> wrote: > OK, here's a simple solution: > > g[m_, s_, x_] = PDF[NormalDistribution[m, s]][x] > > E^(-((-m + x)^2/(2 s^2)))/(Sqrt[2 \[Pi]] s) > > c = Integrate[g[m1, s1, x] g[m2, s2, x], {x, -Infinity, Infinity}, > Assumptions -> {s1 > 0, s2 > 0}] > > E^(-((m1 - m2)^2/(2 (s1^2 + s2^2))))/(Sqrt[2 \[Pi]] Sqrt[s1^2 + s2^2]) > > Checking that we have a PDF: > > Integrate[1/c g[m1, s1, x] g[m2, s2, x], {x, -Infinity, Infinity}, > Assumptions -> {s1 > 0, s2 > 0}] > > 1 > > If that's the PDF, here's the mean: > > m = Integrate[x/c g[m1, s1, x] g[m2, s2, x], {x, -Infinity, Infinity}, > Assumptions -> {s1 > 0, s2 > 0}] > > (m2 s1^2 + m1 s2^2)/(s1^2 + s2^2) > > And here's the standard deviation: > > s = Sqrt@Integrate[(x - m)^2/c g[m1, s1, x] g[m2, s2, > x], {x, -Infinity, Infinity}, Assumptions -> {s1 > 0, s2 > 0}] > > Sqrt[(s1^2 s2^2)/(s1^2 + s2^2)] > > But can we verify it? > > 1/c g[m1, s1, x] g[m2, s2, x] - g[m, s, x] // Simplify > > (E^(-((m2 s1^2 + m1 s2^2 - (s1^2 + s2^2) x)^2/( > 2 s1^2 s2^2 (s1^2 + s2^2)))) (-s1 s2 + > Sqrt[(s1^2 s2^2)/(s1^2 + s2^2)] Sqrt[s1^2 + s2^2]))/(Sqrt[ > 2 \[Pi]] s1 s2 Sqrt[(s1^2 s2^2)/(s1^2 + s2^2)]) > > That needs to be zero for all x, and that's true if and only if: > > -s1 s2 + Sqrt[(s1^2 s2^2)/(s1^2 + s2^2)] Sqrt[s1^2 + s2^2] == 0 > > That's a condition on s1 and s2 alone... and it's an easy one: > > -s1 s2 + Sqrt[(s1^2 s2^2)/(s1^2 + s2^2)] Sqrt[ > s1^2 + s2^2] // PowerExpand > > 0 > > Done. > > Bobby > > On Fri, 05 Mar 2010 03:33:11 -0600, David Park <djmpark at comcast.net> > wrote: > >> I suppose that someone will get this with some simple command but, in >> case >> not, here is my somewhat laborious solution using Presentations. I won't >> show all the output lines, but just the results. Most of the steps are >> done >> on the argument of Exp. In the final steps I substituted f for Exp to >> keep >> Mathematica from recombining the products, and then put the final >> answer in >> Subexpressions. >> >> Needs["Presentations`Master`"] >> >> G[m_, s_, x_] := Exp[-((x - m)^2/(2 s^2))]/(s Sqrt[2 \[Pi]]) >> >> initial = G[m1, s1, x]*G[m2, s2, x] >> Part[initial, 2, 2] >> step1 = CompleteTheSquare[%, x] >> step2 = step1 // MapLevelParts[Simplify, {{1, 2, 3}}] >> rule1 = (expr1 = Part[step2, 2, 1]) -> (expr2 = >> Factor[Together[expr1]]) >> rule2 = -2 expr2 -> 1/s^2 >> step3 = step2 /. rule1 /. rule2 >> step4 = MapAt[Simplify, step3, {{2, 3, 1, 1}}] >> rule3 = -Part[step4, 2, 3, 1, 1] -> m >> step5 = step4 /. rule3 >> msrules = {rulem = Reverse[rule3], rules2 = Reverse[1/# & /@ rule2], >> rules = PowerExpand[Sqrt[#]] & /@ rules2} >> (Times @@ f /@ step5)/(2 \[Pi] s1 s2) >> MapAt[FactorOut[Sqrt[2 \[Pi]] s, CreateSubexpression], %, {6}]; >> MapAt[FactorOut[Sqrt[2 \[Pi]] s1 s2/s, CreateSubexpression], %, {5}]; >> final = % /. f -> Exp >> >> The final answer, with Subexpressions converted to HoldForm: >> >> HoldForm[E^(-((-m + x)^2/(2 s^2)))/(Sqrt[2 \[Pi]] s)] HoldForm[( >> E^(-((m1 - m2)^2/(2 (s1^2 + s2^2)))) s)/(Sqrt[2 \[Pi]] s1 s2)] >> >> With the rules: >> >> {m -> (m2 s1^2 + m1 s2^2)/(s1^2 + s2^2), >> s^2 -> (s1^2 s2^2)/(s1^2 + s2^2), s -> (s1 s2)/Sqrt[s1^2 + s2^2]} >> >> This tests that the results are the same >> >> (final // ReleaseSubexpressions[]) /. msrules // Simplify; >> initial // ExpandAll // Simplify; >> %% == % >> True >> >> >> David Park >> djmpark at comcast.net >> http://home.comcast.net/~djmpark/ >> >> >> From: Ares Lagae [mailto:ares.lagae at sophia.inria.fr] >> >> 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 >> >> >> >> > > -- DrMajorBob at yahoo.com