[Date Index]
[Thread Index]
[Author Index]
Re: Self-teaching snag
*To*: mathgroup at smc.vnet.net
*Subject*: [mg74600] Re: Self-teaching snag
*From*: David Bailey <dave at Remove_Thisdbailey.co.uk>
*Date*: Tue, 27 Mar 2007 04:10:05 -0500 (EST)
*References*: <eu7re0$b6p$1@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
>
Hello,
Your definition of charge is recursive - i.e. the value for N days is
computed from the value at N-1 days. This would be OK (provided you
always use a positive integer as argument) but your definition uses two
calls to charge[N-1], which involves four calls to charge[N-2] .... etc.
2^35 function calls take a lot of time, even in Mathematica! A slight
change will fix this:
charge[0] = 1.0 (*100%*);
charge[day_] := (0.95 charge[day - 1]);
You might think that Mathematica would make this simplification
automatically, but Simplify is not applied automatically on the contents
of a function definition.
Solve works on mathematical equations - not functions defined as
Mathematica code. Even NSolve will flounder because your definition will
enter an infinite recursive loop in its argument is anything other than
a positive integer.
How about writing your function as
charge[n_] := 0.95^n
David Bailey
http://www.dbaileyconsultancy.co.uk
Prev by Date:
**Re: Re: Definite Integration in Mathematica**
Next by Date:
**Re: Self-teaching snag**
Previous by thread:
**Re: Self-teaching snag**
Next by thread:
**Re: Self-teaching snag**
| |