MathGroup Archive 2007

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

Search the Archive

Re: Iterating List

  • To: mathgroup at smc.vnet.net
  • Subject: [mg77137] Re: Iterating List
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Mon, 4 Jun 2007 03:59:01 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <f3ltcf$5df$1@smc.vnet.net><f3og49$p9d$1@smc.vnet.net> <f3u4rb$37j$1@smc.vnet.net>

R.G wrote:
> On Jun 1, 2:59 pm, Jean-Marc Gulliet <jeanmarc.gull... at gmail.com>
> wrote:
>> Gobiithasan wrote:
>>> Hi, it would be a great help if Mathsgroup members can
>>> show me how to code the following problem in
>>> mathematica:
>>> Say I have a function defined as:
>>> f[a_, b_] = Integrate[Sin[x] + 3, {x, a, b}]
>>> I can find b with given constant=2 and initial
>>> value=0:
>>> In[1]:=
>>> Initialvalue = 0;
>>> s1 = FindRoot[f[0, unknown] == 2, {unknown,
>>> Initialvalue}];
>>> x1 = Part[s1, 1, 2]
>>> Now, using the x1 value obtained from FindRoot, I can
>>> find x2:
>>> s2 = FindRoot[f[x1, unknown] == 2, {unknown,
>>> Initialvalue}];
>>> x2 = Part[s2, 1, 2]
>>> How can i do it for n times (to get xn in a list form)
>>> with given initial value as:
>>> initialvalue= {initialvalue1,initialvalue2,
>>> ....,initialvalue3}
>>> whereby each xi will get initialvalue[[i]].
>>> Thanking you in advance
>>> ~gobiithasan
>> One possible way of doing what you are looking for is the use a
>> functional construct such as NestList and a pure function (that why you
>> can see #1 and &). For instance,
>>
>> In[1]:= f[a_, b_] = Integrate[Sin[x] + 3, {x, a, b}];
>>    With[{Initialvalue = 0, n = 5},
>>      Rest[NestList[FindRoot[f[#1, unknown] == 2,
>>                {unknown, Initialvalue}][[1, 2]] & , 0, n]]]
>>
>> Out[1]= {0.607102, 1.13938, 1.64271, 2.15069, 2.69881}
>>
>> Regards,
>> Jean-Marc
> 
> Hi Jean-Marc,
> Thank you for your answer. The code you wrote works for
> Initialvalue=0.
> However, If I have initial values in terms of a list, say,
> initialvalues=Table[t,{0,1/n}], How do i modify it?
> Best Regards,
> R.G

Among many other ways,

In[1]:= f[a_, b_] = Integrate[Sin[x] + 3, {x, a, b}];
With[{n = 3},
   Module[{initialvalues = Table[i, {i, 0, 5}], g},
     g = Function[{initval},
         Rest[NestList[FindRoot[f[#1, unknown] == 2,
         {unknown,initval}][[1, 2]] & , 0, n]]];
     g /@ initialvalues]]

Out[2]=
{{0.6071016481031226, 1.139384548290925, 1.6427145767770854},
    {0.6071016481031226, 1.1393845482909248, 1.6427145767770859},
    {0.6071016481031226, 1.1393845482909244, 1.642714576777085},
    {0.6071016481031226, 1.1393845482909244, 1.6427145767770854},
    {0.6071016481031227, 1.1393845482909244, 1.6427145767770854},
    {0.6071016481031227, 1.139384548290925, 1.6427145767770859}}

Regards,
Jean-Marc


  • Prev by Date: Re: Re: Gradient option for FindMinimum
  • Next by Date: Re: Developing Applications using Mathematica
  • Previous by thread: Re: Iterating List
  • Next by thread: Re: real world solutions for a fractional permutation