Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Mathematica - Iterations with 2 arguments

  1. Jan 18, 2012 #1
    I'm trying to build a simple function that takes 2 arguments. Basically, I want it to do this:

    x(n+1)=a*sin[x(n)]

    and generate a list of x0,x1,x2 etc. up to x(n) like NestList does, starting from x0=1.0

    So I want to make a list of these iterations, where a is a constant of my choice, and n is the number of iterations. My first guess was to try

    iteration[a_,n_]:=NestList[a*Sin,1.0,n]

    but of course it doesn't work as Mathematica doesnt recognize a*Sin as a function. So I tried defining a function acos[a_,x_]:=a*Sin[x] first but not only does it look inefficient to define 2 functions for something this simple, it also introduces another argument, and I still can't find a way to get it to work.

    Thanks!
     
  2. jcsd
  3. Jan 18, 2012 #2
    In[1]:= iteration[a_,n_]:=NestList[(a*Sin[#])&,1.0,n]

    In[3]:= iteration[1,4]
    Out[3]= {1.,0.841471,0.745624,0.67843,0.627572}

    "&" is a shorthand for Function[] and you could equally write this as

    In[4]:= iteration[a_,n_]:=NestList[Function[x,a*Sin[x]],1.0,n]

    In[5]:= iteration[1,4]
    Out[5]= {1.,0.841471,0.745624,0.67843,0.627572}

    & is commonly used in Mathematica programming, but often confusing when first encountered.
     
  4. Jan 19, 2012 #3
    I see. It works great, thank you very much!
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook