MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problems with FindRoot and recursive functions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg89695] Re: Problems with FindRoot and recursive functions
  • From: "Daniel Kuang Chen Liu" <dkliu1 at student.monash.edu.au>
  • Date: Wed, 18 Jun 2008 04:25:03 -0400 (EDT)
  • References: <g35g0m$9bv$1@smc.vnet.net> <48565C59.1040200@gmail.com>

To Jean-Marc and dh,

Forcing the use of numeric arguments still doesn't seem to work.
The correct answer is {t -> 0.5} but we get {t -> 0} when we make the
x1[t_?NumericQ] modification. NumericQ appears to stop the recursion process
at {t,1}.

Thank you for the help.

Daniel Liu

On Mon, Jun 16, 2008 at 10:28 PM, Jean-Marc Gulliet <
jeanmarc.gulliet at gmail.com> wrote:

> Daniel Kuang Chen Liu wrote:
>
>  I have a recursive function of the form
>>
>>  x1[t_] := If[t < 0, {t, 1}, 0.5 + x1[t - 1]]
>>>>
>>>
>> which returns a list of length 2, and the first element has a root at
>> t=0.5
>>
>>> In[3]:= x1[0.5]
>>>> Out[3]= {0., 1.5}
>>>>
>>>
>> I want to use FindRoot to determine t0 such that x1[t0][[1]] == 0, so I
>> use
>> the following code
>>
>>  FindRoot[x1[t][[1]] == 0, {t, 0.5}]
>>>>
>>>
>> to which Mathematica complains
>>
>> During evaluation of In[6]:= FindRoot::nlnum: The function value
>> {False} is not a list of numbers with dimensions {1} at {t} = {0.5}.
>>
>> It would much appreciated if someone could tell me what is wrong with the
>> code.
>>
>
> Hi Daniel,
>
> You just have to ensure that the function x1 is called for numeric values
> only [1]. For instance,
>
>    x1[t_?NumericQ] := If[t < 0, {t, 1}, 0.5 + x1[t - 1]]
>    FindRoot[x1[t][[1]] == 0, {t, 0.5}]
>
>    {t -> 0.}
>
> Regards,
> - Jean-Marc
>
> [1] "How do I write a function which evaluates only when the argument is a
> number?"
> http://support.wolfram.com/mathematica/kernel/features/evalwhennumber.html
>
>


  • Prev by Date: Bug in LogPlot and ListLogPlot in V6.0.3
  • Next by Date: Re: Problems with FindRoot and recursive functions
  • Previous by thread: Re: Problems with FindRoot and recursive functions
  • Next by thread: Re: Problems with FindRoot and recursive functions