iterate
Syntax
iterate(init, coeffs, input)
Arguments
init a scalar or a vector.
coeffs a scalar or a vector. init and coeffs have the same length.
input a scalar or a vector. If input is a scalar, it must be an integer and it means the number of iterations; if input is a vector, its length means the number of iterations and each element of input is added to the result of the corresponding iteration.
Details
If init, coeffs and input are all scalars, return a geometric sequence [init*coeffs, init*coeffs^2, init*coeffs^3, …]. The length of the sequence is input.
If init and coeffs are scalars and input is a vector, return an
array x with x[0]=init*coeffs
+ input[0] and x[n]=x[n-1]*
coeffs + input[n].
If init and coeffs are vectors and input is a scalar, return an array x with x[n]=y(n)** coeffs, y(n)=y(n-1)[1:].append!(x[n-1]), y(0)= init. The length of x is input. ** returns the inner product of 2 vectors.
If init, coeffs and input are all vectors, return an array x with x[n]=y(n)** coeffs + input[n], y(n)=y(n-1)[1:].append!(x[n-1]), y(0)= init. The length of x is input. ** returns the inner product of 2 vectors.
Examples
iterate(1, 0.8, 3);
// output
[0.8,0.64,0.512]
// 1*0.8=0.8, 0.8*0.8=0.64, 0.64*0.8=0.512
iterate(1, 0.8, 0.1 0.2 0.3);
// output
[0.9,0.92,1.036]
// 1*0.8+0.1=0.9, 0.9*0.8+0.2=0.92, 0.92*0.8+0.3=1.036
iterate(1 1, 1 1, 10);
// output
[2,3,5,8,13,21,34,55,89,144]
// this is the Fibonacci series: 1*1 + 1*1=2; 1*1+2*1=3; 2*1+3*1=5; 3*1+5*1=8; ... ; 55*1+89*1=144.
iterate(1 1, 1 1, 1 2 3 4 5);
// output
[3,6,12,22,39]
// 1*1+1*1+1=3; 1*1+3*1+2=6; 3*1+6*1+3=12; 6*1+12*1+4=22; 12*1+22*1+5=39.