Re: Problem with FullSimplify in Version 5: Rationals are converted to Reals
- To: mathgroup at smc.vnet.net
- Subject: [mg46307] Re: [mg45482] Problem with FullSimplify in Version 5: Rationals are converted to Reals
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Fri, 13 Feb 2004 21:57:38 -0500 (EST)
- References: <402D01EB.6040505@uni-mainz.de> <9347FA52-5E55-11D8-B94B-00039311C1CC@mimuw.edu.pl>
- Sender: owner-wri-mathgroup at wolfram.com
I forgot to add, that if you are going to do this frequently there is no need to write this code every time. Just define your own function MySimplify: MySimplify[expr,opts___]: =ReleaseHold[Simplify[(If[NumericQ[#]&&Head[#]=!= Real,Hold[#],#]&)//@expr]] and now use: Solve[MySimplify[expr],deltaL] Of course you can do the same thing using Rationalize. Andrzej Kozlowski On 13 Feb 2004, at 19:51, Andrzej Kozlowski wrote: > For all its worth here is another way that uses Hold instead of > Rationalize: > > > Solve[ReleaseHold[Simplify[(If[NumericQ[#] && Head[#] =!= Real, > Hold[#], > #] & ) //@ expr]], deltaL] > > > Inverse functions are being used by Solve so some solutions may not be > found; use Reduce for complete solution information. > > > {{deltaL -> 3.7998970410976023, > Erf[(0.3070925731856876*(2.302585092994046*(0.1*deltaL - 10.) + > 23.025850929940457))/ > Sqrt[(0.6089140226261116 - 0.005294904544574884*(deltaL + > 20.))^2 + > 0.25302502757884177]] -> 0.41421356237309503}} > > The "two rule" form of the solution is curious and surprised me, but > we can check that the solution is self-consistent: > > > %[[1,2]]/.%[[1,1]] > > 0.414214->0.414214 > > > > > On 13 Feb 2004, at 17:57, oberfeld wrote: > >> Dear list, >> >> some weeks ago, I posted a question concerning FullSimplify in Ma 5.0 >> which seems to occur because Rationals are converted to Reals. >> >> Thanks to those who suggested work-arounds! Unfortunately, I was not >> able to resolve my problem following the suggestions. Wolfram support >> meanwhile confirmed this to be a problem of version 5.0.0 and said >> that the problem were resolved in Ma 5.0.1. However, after >> installing the update I had to realize that this is *not correct*. >> >> So, for all who are interested, here comes the 'full problem' (and >> its solution) again: >> >> I have to solve a rather nasty expr for a variable deltaL: >> >> expr=1/Sqrt[2] == >> (1/2)*(1 + (1/2)*(-1 - Erf[(-(Log[10000000000]/Log[10]) - >> Log[10^(-12 + (20 + deltaL)/10)]/Log[10])/ >> (Sqrt[2]*Sqrt[0.25302502757884177 + (0.6089140226261116 - >> 0.005294904544574884*(20 + deltaL))^2])])) + >> (1/4)*(1 + Erf[(Log[10000000000]/Log[10] + Log[10^(-12 + (20 + >> deltaL)/10)]/Log[10])/ >> (Sqrt[2]*Sqrt[0.25302502757884177 + (0.6089140226261116 - >> 0.005294904544574884*(20 + deltaL))^2])]); >> >> In Ma 3+4, the following straightforward expression works: >> >> Solve[FullSimplify[expr],deltaL] >> >> In Ma 5, however, the same expression produces the all-too-well-known >> message "Solve::tdep: The equations appear to involve the variables >> to be solved for in an essentially non-algebraic way." >> >> Switching to Simplify (instead of FullSimplify), as Andrzej & Bob >> suggested, does not help (at least on my machine). >> >> The only solution I found (thank's for the idea, Bob!), was to use >> Rationalize: >> >> N[Solve[Simplify[Rationalize[expr,0]],deltaL]] >> Out:={deltaL->3.7999} >> >> Note, that *FullSimplify* still does not work!! >> >> N[Solve[FullSimplify[Rationalize[expr,0]],deltaL]] >> >> >> >> Would be no problem were it not for many of such expressions >> lingering in my code, so that I have to step through it and insert >> that "Rationalize magic" each and every time... ;-( >> >> Best wishes >> >> Daniel >> >> >> ------------------------------------- >> Dipl. Psych. Daniel Oberfeld-Twistel >> University of Mainz >> Institute of Psychology >> Experimental Psychology >> >> Staudingerweg 9 >> 55099 Mainz >> Germany >> >> T. ++49 (0) 6131 39 22423 >> Fax. ++49 (0) 6131 39 22480 >> >> >> >> > Andrzej Kozlowski > Chiba, Japan > http://www.mimuw.edu.pl/~akoz/ >