Re: Re: Self-teaching snag

*To*: mathgroup at smc.vnet.net*Subject*: [mg74613] Re: [mg74601] Re: [mg74556] Self-teaching snag*From*: leigh pascoe <leigh at cephb.fr>*Date*: Wed, 28 Mar 2007 01:43:57 -0500 (EST)*References*: <200703260704.CAA11373@smc.vnet.net> <200703270910.EAA14051@smc.vnet.net>

Dear Todd, Your question solicited a lot of responses, including mine below that was not entirely correct. While everyone noted the problem with the efficiency of recursive definitions, I wanted to add simply that even the case of trying to solve for the time when the battery is at .95 (obviously after 1 day) fails because of the problem with machine precision that I suggested in my original reply. In[1]:=charge[0]=1.0 (*100%*); charge[day_]:=(charge[day-1]-(0.05*charge[day-1])); In[3]:=Solve[charge[day]\[Equal]0.15,day] From In[3]:=\!\(\* RowBox[{\($RecursionLimit::"reclim"\), \(\(:\)\(\ \)\), "\<\"Recursion \ depth of \\!\\(256\\) exceeded. \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"$RecursionLimit::reclim\\\"]\\)\"\>"}]\) From In[3]:= \!\(\* Out[3]=$Aborted You have already been given numerous ways to get the answer you wanted. Leigh leigh pascoe wrote: > Todd Allen wrote: > >> Hi All, >> >> I am trying to refresh my skills in basic problem >> solving using Mathematica, but am running into some >> difficulties which are beginning to make me suspicious >> of Mathematica itself. (I probably should be >> suspicious of my own brain...but you know how that is >> :-) >> >> Here is the scenario: I have written a basic function >> to tell me what percentage of battery power will >> remain in a battery after x number of days, provided >> that we start with a full charge and lose 5% of that >> charge per day. >> >> If you execute the following code in Mathematica >> (V5.1): >> >> charge[0]=1.0 (* 100% *); >> charge[day_]:=(charge[day-1]-(0.05*charge[day-1])); >> charge[20] >> >> I receive an output of 0.358486 for my query at the 20 >> day mark.....so, no problem so far. >> >> However, when I try to ask for the output at >> charge[35], mathematica seems to enter an endless >> calculation. I've let the computer run for as long as >> 5 minutes without getting an answer. Is there >> something wrong with my function, my version of >> Mathematica or something else I haven't considered? >> >> >> Additionally, >> >> When I try the following: >> >> In[145]:= >> Solve[charge[day]==0.15,day]; >> >> Mathematica gives me the error: >> "$RecursionLimit::reclim: Recursion depth of 256 >> exceeded." >> >> I am trying to ask Mathematica to tell my how many >> days it takes to reduce the battery power to 15 >> percent, but I must be messing something up?? >> >> If anyone has any pointers, I'd certainly appreciate >> it, because I am a little stuck right now. >> >> Best regards, >> Todd Allen >> >> >> >> ____________________________________________________________________________________ >> We won't tell. Get more on shows you hate to love >> (and love to hate): Yahoo! TV's Guilty Pleasures list. >> http://tv.yahoo.com/collections/265 >> >> >> >> >> >> > This is not exactly an answer to your question, but recursive > definitions are notoriously inefficient. However your basic problem is > that you are mixing a function that is defined for integers and trying > to solve an equation whose solution is not an exact multiple of days. > Similarly when you try to find charge[30] you are probably suffering > from rounding errors due to machine precision and never arriving at the > root of your recursion (charge[0]). For example if you try to evaluate > charge[30.00000000000000001] Ma will never arrive at a value by the > recursive search. > > Your problem is easily soluble if you formulate it directly as a > continuous variable as follows. > > charge[x]:=.95^x; > charge[30] > for the first part, > > or > > Solve[ch[x]\[Equal].15,x] > > for the second. > > with a pencil and paper x=Log[.15]/Log[.95]=36.9857, which is the answer > returned by Solve. > > I hope this helps. > > Leigh > > > > > >

**References**:**Self-teaching snag***From:*Todd Allen <genesplicer28@yahoo.com>

**Re: Self-teaching snag***From:*leigh pascoe <leigh@cephb.fr>