Re: Self-teaching snag

*To*: mathgroup at smc.vnet.net*Subject*: [mg74601] Re: [mg74556] Self-teaching snag*From*: leigh pascoe <leigh at cephb.fr>*Date*: Tue, 27 Mar 2007 04:10:37 -0500 (EST)*References*: <200703260704.CAA11373@smc.vnet.net>

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

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

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