vec ← (fun ##.traj) arg                     ⍝ Function limit 'trajectory'.

Similar to →limit←, the operator applies its function operand cumulatively until
an  argument that has been used before is detected. The vector of distinct argu-
ments  together with the final result is the trajectory of the function. As with
→limit←,  a  dyadic  function  can be bound with one argument to provide the re-
quired monadic operand function.

Technical note:

With the introduction of ⍣, the primitive power operator, this operator could be
coded:

    traj←{
        ¯1↓⍺⍺{⍵,⊂⍺⍺⊃⌽⍵}⍣{(⊂⊃⌽⍺)∊⍵}⊂⍵
    }

Examples:

      {2|⍵:1+3×⍵ ⋄ ⍵÷2}traj 7               ⍝ Trajectory of osc function.
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

This operator gives the next approximation in a Newton-Raphson iteration:


      nr←{⍺←⎕CT                     ⍝ Newton-Raphson.
          y ∆y←⍺⍺¨(⊂⍵)×1+0 ⍺        ⍝ f(x), f(x+∆)
          ⍵+(⍺×y)÷y-∆y              ⍝ next estimate.
      }

      2∘○ nr traj 1.5       ⍝ Root of Cos(x) near 1.5.
1.5 1.570990983 1.570796171 1.570796327 1.570796327 1.570796327

      1e¯3∘(2∘○ nr)traj 1.5 ⍝ Same again but with an explicit increment.
1.5 1.570912342 1.570796327 1.570796327

⍝ Nicolas Delcros reminds us of Gérard Langlet's algorithm for generating
⍝ a Sierpinski triangle by repeated applications of ≠\:

    ' *'[⎕io+↑≠\traj 32⍴1]          ⍝ Sierpinski triangle.
********************************
* * * * * * * * * * * * * * * *
**  **  **  **  **  **  **  **
*   *   *   *   *   *   *   *
****    ****    ****    ****
* *     * *     * *     * *
**      **      **      **
*       *       *       *
********        ********
* * * *         * * * *
**  **          **  **
*   *           *   *
****            ****
* *             * *
**              **
*               *
****************
* * * * * * * *
**  **  **  **
*   *   *   *
****    ****
* *     * *
**      **
*       *
********
* * * *
**  **
*   *
****
* *
**
*

See also: acc limit pow while until osc life

Back to: contents

Back to: Workspaces