Re: Re: Re: Log[4]==2*Log[2]
- To: mathgroup at smc.vnet.net
- Subject: [mg50619] Re: [mg50599] Re: [mg50557] Re: [mg50520] Log[4]==2*Log[2]
- From: DrBob <drbob at bigfoot.com>
- Date: Mon, 13 Sep 2004 02:19:37 -0400 (EDT)
- References: <200409120842.EAA01340@smc.vnet.net> <opsd8augkviz9bcq@monster.cox-internet.com> <9144B6AA-0511-11D9-9D11-000A95B4967A@akikoz.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
>> it seems to me that it is a good idea >> for errors to produce error messages It's not an error. If we ask Simplify to recognize an equality, we (usually) don't get an error message if it fails; we just get back the original expression. This is NO different. In fact, for the expression Log[4]==2Log[2], Simplify returns True as it should--but too late to avoid the "error" message from Equal. That's just dumb. Log[4]==2Log[2]//Simplify \!\(\* RowBox[{\(N::"meprec"\), \(\(:\)\(\ \)\), "\<\"Internal precision limit $MaxExtraPrecision = \\!\\(50.`\\) reached while evaluating \ \\!\\(\\(\\(\\(\\(-2\\)\\)\\\\ \\(\\(Log[2]\\)\\)\\)\\) + \ \\(\\(Log[4]\\)\\)\\). \\!\\(\\*ButtonBox[\\\"More?\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::meprec\\\"]\\)\"\>"}]\) True Bobby On Mon, 13 Sep 2004 08:14:59 +0900, Andrzej Kozlowski <andrzej at akikoz.net> wrote: > *This message was transferred with a trial version of CommuniGate(tm) Pro* > > On 13 Sep 2004, at 04:24, DrBob wrote: > >> >> If Equal can't decide equality for exact expressions, then it should >> return unevaluated. It shouldn't interrupt everything with a useless >> error message. >> >> Bobby > > I am not sure about that. You are right as far as the "aesthetics" of > the interface of CAS is concerned. But when this sort of thing happens > in a program it is likely to be the result of an error (probably not > intended by the programmer) and it seems to me that it is a good idea > for errors to produce error messages since it makes it debugging > easier (such messages can be caught with Check). > > Andrzej > >> >> >> On Sun, 12 Sep 2004 04:42:10 -0400 (EDT), Andrzej Kozlowski >> <andrzej at akikoz.net> wrote: >> >>> Actually, I don't think Mathematica does any real "determining" since >>> it does not replace the exact values given in the input by >>> numerical approximations. The message issued is, I think, purely >>> formal. Mathematica could not determine anything because it tries to >>> compare the numbers "numerically" without using approximate numerical >>> values, which can't be done. (You have to apply N for it to use >>> numerical values). That't what I meant by "not surprisingly". I don't >>> think I really understand your point? >>> >>> ANdrzej >>> >>> >>> On 11 Sep 2004, at 01:52, DrBob wrote: >>> >>> >>>>>> Mathematica does not apply any simplification rules but just tries >>>>>> to >>>>>> evaluate the expression numerically and, not >>>>>> surprisingly, it can't determine if the LHS is zero or not >>>>>> up to the required precision. >>>> >>>> On the contrary, I think the error message itself clearly indicates >>>> the difference IS zero to "the required precision". If 50 digits >>>> extra >>>> precision isn't enough to determine that the difference ISN'T zero, >>>> why doesn't Equal return True? >>>> >>>> Bobby >>>> >>>> On Fri, 10 Sep 2004 04:05:56 -0400 (EDT), Andrzej Kozlowski >>>> <andrzej at akikoz.net> wrote: >>>> >>>>> On 9 Sep 2004, at 18:17, Andreas Stahel wrote: >>>>> >>>>>> >>>>>> To whom it may concern >>>>>> >>>>>> the following answer of Mathematica 5.0 puzzeled me >>>>>> >>>>>> Log[4]==2*Log[2] >>>>>> leads to >>>>>> >>>>>> N::meprec: Internal precision limit $MaxExtraPrecision = 50.` >>>>>> reached >>>>>> while \ >>>>>> evaluating -2\Log[2]+Log[4] >>>>>> >>>>>> with the inputs given as answer. But the input >>>>>> >>>>>> Log[4.0]==2*Log[2] >>>>>> >>>>>> leads to a sound "True" >>>>>> >>>>>> Simplify[Log[4]-2*Log[2]] >>>>>> leads to the correct 0, but >>>>>> Simplify[Log[4]-2*Log[2]==0] >>>>>> yields no result >>>>>> >>>>>> There must be some systematic behind thid surprising behaviour. >>>>>> Could somebody give me a hint please >>>>>> >>>>>> With best regards >>>>>> >>>>>> Andreas >>>>>> -- >>>>>> Andreas Stahel E-Mail: Andreas.Stahel at [ANTI-SPAM]hti.bfh.ch >>>>>> Mathematics, HTI Phone: ++41 +32 32 16 258 >>>>>> Quellgasse 21 Fax: ++41 +32 321 500 >>>>>> CH-2501 Biel WWW: www.hta-bi.bfh.ch/~sha >>>>>> Switzerland >>>>>> >>>>>> >>>>> >>>>> When you enter >>>>> >>>>> Log[4] - 2*Log[2] == 0 >>>>> >>>>> Mathematica does not apply any simplification rules but just tries >>>>> to >>>>> evaluate the expression numerically and, not surprisingly, it can't >>>>> determine if the LHS is zero or not up to the required precision. >>>>> >>>>> If you use >>>>> >>>>> Simplify[Log[4] - 2*Log[2] == 0] >>>>> >>>>> Mathematica first tries to evaluate the argument of Simplify and the >>>>> same thig happens as above, but then it actually applies Simplify to >>>>> the output and gets the right answer True. >>>>> >>>>> The best thing to do is: >>>>> >>>>> >>>>> Simplify[Unevaluated[Log[4]-2*Log[2]==0]] >>>>> >>>>> >>>>> True >>>>> >>>>> which avoids evaluation of the argument and instead uses Simplify on >>>>> the unevaluated input. >>>>> >>>>> >>>>> >>>>> Andrzej Kozlowski >>>>> Chiba, Japan >>>>> http://www.akikoz.net/~andrzej/ >>>>> http://www.mimuw.edu.pl/~akoz/ >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> DrBob at bigfoot.com >>>> www.eclecticdreams.net >>>> >>> >>> >>> >> >> >> >> -- >> DrBob at bigfoot.com >> www.eclecticdreams.net >> > > > -- DrBob at bigfoot.com www.eclecticdreams.net
- References:
- Re: Re: Log[4]==2*Log[2]
- From: Andrzej Kozlowski <andrzej@akikoz.net>
- Re: Re: Log[4]==2*Log[2]