Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: Simplification de formule/ Simplification of formula

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124459] Re: Simplification de formule/ Simplification of formula
  • From: "Dr. Wolfgang Hintze" <weh at snafu.de>
  • Date: Fri, 20 Jan 2012 01:52:45 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jf696v$gdp$1@smc.vnet.net> <jf8qd2$3ld$1@smc.vnet.net>

Here's a possible solution to the problem of inverting replacement 
rules.


In[42]:=
r = {a -> b}; s = {a -> b, c -> d};
In[40]:=
(Rule @@ Sequence[Reverse[List @@ #1]] & ) /@ r
Out[40]=
{b -> a}
In[41]:=
(Rule @@ Sequence[Reverse[List @@ #1]] & ) /@ s
Out[41]=
{b -> a, d -> c}

For a "naked" rule (not in a list) you should use

In[43]:=
t = u -> v;
(Rule @@ Sequence[Reverse[List @@ #1]] & )[t]
Out[44]=
v -> u

Regards,
Wolfgang

"Dr. Wolfgang Hintze" <weh at snafu.de> schrieb im Newsbeitrag 
news:jf8qd2$3ld$1 at smc.vnet.net...
>> I want to simplify this formula :
>
> This is obviously a good idea and a good excercise if it comes to
> obtaining an overview over a confusing looking expression.
>
> You cannot expect fully automatic simplification, since it was not
> clearly stated which should be the desired form.
> So it will be a dialog between you and Mathematica.
>
> I suggest to first to make some replacements to get better 
> readability
> (you can undo them in the end).
> Then recognising the structure by eye it will almost become obvious
> which commands to choose.
>
> Ok, let's do it!
>
> 1) Let your expression be
>
> x = -((DK*Pv2*Cos[a2 - alpha3]*Cos[aV2]*Sin[a2 - aV2])/(DK*Cos[a2 -
> alpha3] - KF*Sin[a2 - alpha3])) +
> (KF*Pv2*Cos[aV2]*Sin[a2 - alpha3]*Sin[a2 - aV2])/(DK*Cos[a2 - 
> alpha3] -
> KF*Sin[a2 - alpha3]) -
> (DG3*P3*Sin[alpha3]*Sin[a2 - aV2])/(DK*Cos[a2 - alpha3] - KF*Sin[a2 -
> alpha3]) - (DK*FV2*Pv2*Cos[a2 - alpha3]*Cos[a2 - aV2]*Sin[aV2])/
> (L2*(DK*Cos[a2 - alpha3] - KF*Sin[a2 - alpha3])) + 
> (FV2*KF*Pv2*Cos[a2 -
> aV2]*Sin[a2 - alpha3]*Sin[aV2])/
> (L2*(DK*Cos[a2 - alpha3] - KF*Sin[a2 - alpha3])) - (KF*Pv2*Cos[a2 -
> alpha3]*Sin[a2 - aV2]*Sin[aV2])/(DK*Cos[a2 - alpha3] - KF*Sin[a2 -
> alpha3]) +
> (FV2*KF*Pv2*Cos[a2 - alpha3]*Sin[a2 - aV2]*Sin[aV2])/(L2*(DK*Cos[a2 -
> alpha3] - KF*Sin[a2 - alpha3])) -
> (DK*Pv2*Sin[a2 - alpha3]*Sin[a2 - aV2]*Sin[aV2])/(DK*Cos[a2 - 
> alpha3] -
> KF*Sin[a2 - alpha3]) + (DK*FV2*Pv2*Sin[a2 - alpha3]*Sin[a2 -
> aV2]*Sin[aV2])/
> (L2*(DK*Cos[a2 - alpha3] - KF*Sin[a2 - alpha3]))
>
> 2) Replacements
>
> x1 =  x /. {a2 -> a, alpha3 -> b, aV2 -> c, DK -> A, Pv2 -> B, KF -> 
> U,
> DG3 -> V, P3 -> W, FV2 -> X, L2 -> Y}
>
> -((A*B*Cos[a - b]*Cos[c]*Sin[a - c])/(A*Cos[a - b] - U*Sin[a - b])) +
> (B*U*Cos[c]*Sin[a - b]*Sin[a - c])/(A*Cos[a - b] - U*Sin[a - b]) -
> (V*W*Sin[b]*Sin[a - c])/(A*Cos[a - b] - U*Sin[a - b]) - 
> (A*B*X*Cos[a -
> b]*Cos[a - c]*Sin[c])/(Y*(A*Cos[a - b] - U*Sin[a - b])) +
> (B*U*X*Cos[a - c]*Sin[a - b]*Sin[c])/(Y*(A*Cos[a - b] - U*Sin[a -
> b])) - (B*U*Cos[a - b]*Sin[a - c]*Sin[c])/(A*Cos[a - b] - U*Sin[a - 
> b])
> +
> (B*U*X*Cos[a - b]*Sin[a - c]*Sin[c])/(Y*(A*Cos[a - b] - U*Sin[a -
> b])) - (A*B*Sin[a - b]*Sin[a - c]*Sin[c])/(A*Cos[a - b] - U*Sin[a - 
> b])
> +
> (A*B*X*Sin[a - b]*Sin[a - c]*Sin[c])/(Y*(A*Cos[a - b] - U*Sin[a - 
> b]))
>
> By the way, this expression looks much nicer in Mathematica than in
> this mail here.
>
> 3) Seeing the common denominator we tell Mathematica to extract it
> x2 = Collect[x1, A*Cos[a - b] - U*Sin[a - b]]
>
> (1/(A*Cos[a - b] - U*Sin[a - b]))*((-A)*B*Cos[a - b]*Cos[c]*Sin[a - 
> c]
> + B*U*Cos[c]*Sin[a - b]*Sin[a - c] - V*W*Sin[b]*Sin[a - c] -
> (A*B*X*Cos[a - b]*Cos[a - c]*Sin[c])/Y + (B*U*X*Cos[a - c]*Sin[a -
> b]*Sin[c])/Y - B*U*Cos[a - b]*Sin[a - c]*Sin[c] +
> (B*U*X*Cos[a - b]*Sin[a - c]*Sin[c])/Y - A*B*Sin[a - b]*Sin[a -
> c]*Sin[c] + (A*B*X*Sin[a - b]*Sin[a - c]*Sin[c])/Y)
>
> Again this expression looks much nicer in Mathematica than in this 
> mail
> here.
>
> 4) Trying to extrax 1/Y using collect didn't improve things so we try 
> a
> Simplify in the end
>
> x3 = Simplify[x2]
>
> -((1/(2*Y*(A*Cos[a - b] - U*Sin[a - b])))*(B*U*X*Cos[2*a - b] -
> B*U*Y*Cos[b] - B*U*X*Cos[2*a - b - 2*c] + B*U*Y*Cos[2*a - b - 2*c] +
> V*W*Y*Cos[a - b - c] -
> V*W*Y*Cos[a + b - c] + A*B*X*Sin[2*a - b] + A*B*Y*Sin[b] -
> A*B*X*Sin[2*a - b - 2*c] + A*B*Y*Sin[2*a - b - 2*c]))
>
> This seems to be a rather good result:
>
> - one common denominator extracted
> - all terms in the big bracket have the same structure A*B*C 
> Trig[...]
> - angles collected under the Trigfunctions
>
> PS: here is a little additional exercise: how would you invert the
> replacements 2) efficiently?
>
> Hope this helps
> Best regards,
> Wolfgang
>
>
> "Nicolas Simon" <nicodumonastal at gmail.com> schrieb im Newsbeitrag
> news:jf696v$gdp$1 at smc.vnet.net...
>>
>> Hi !
>>
>> I want to simplify this formula :
>>
>> -((DK Pv2 Cos[a2 - alpha3] Cos[aV2] Sin[a2 - aV2])/(
>>  DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) + (
>> KF Pv2 Cos[aV2] Sin[a2 - alpha3] Sin[a2 - aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) - (
>> DG3 P3 Sin[alpha3] Sin[a2 - aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) - (
>> DK FV2 Pv2 Cos[a2 - alpha3] Cos[a2 - aV2] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) + (
>> FV2 KF Pv2 Cos[a2 - aV2] Sin[a2 - alpha3] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) - (
>> KF Pv2 Cos[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) + (
>> FV2 KF Pv2 Cos[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) - (
>> DK Pv2 Sin[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) + (
>> DK FV2 Pv2 Sin[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])).
>>
>> By manually regrouping the terms, the denominator disappears for a
>> large number of fraction but I'm not able to reproduce this result
>> with Simplify or others Mathematica tools to handle formula. Any
>> suggestion of how I could do that with Mathematica ?
>> Thank you for your help !
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> Bonjour,
>>
>> Je souhaite simplifier cette formule :
>>
>> -((DK Pv2 Cos[a2 - alpha3] Cos[aV2] Sin[a2 - aV2])/(
>>  DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) + (
>> KF Pv2 Cos[aV2] Sin[a2 - alpha3] Sin[a2 - aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) - (
>> DG3 P3 Sin[alpha3] Sin[a2 - aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) - (
>> DK FV2 Pv2 Cos[a2 - alpha3] Cos[a2 - aV2] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) + (
>> FV2 KF Pv2 Cos[a2 - aV2] Sin[a2 - alpha3] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) - (
>> KF Pv2 Cos[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) + (
>> FV2 KF Pv2 Cos[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])) - (
>> DK Pv2 Sin[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3]) + (
>> DK FV2 Pv2 Sin[a2 - alpha3] Sin[a2 - aV2] Sin[aV2])/(
>> L2 (DK Cos[a2 - alpha3] - KF Sin[a2 - alpha3])).
>>
>> En regroupant les bons termes le d=E9nominateur se simplifie pour un
>> grand nombres de fractions mais je n'arrive pas a ce r=E9sultat avec
>> les
>> outils de simplification (FullSimplify ou Simplify) ou les outils de
>> manipulations de formule. Est ce que vous auriez une id=E9e de
>> comment
>> faire comme pr=E9ciser certains "assumption" dans Simplify ?
>> Merci de votre aide.
>>
>
> 




  • Prev by Date: Re: Slow plotting of reflected parametric "butterflies"
  • Next by Date: Re: Is there any efficient easy way to compare two lists with the same length with Mathematica?
  • Previous by thread: Re: Simplification de formule/ Simplification of formula
  • Next by thread: Re: Simplification de formule/ Simplification of formula