1
$\begingroup$

I have a function f with two integers as input arguments, and I need to create a table iterating on those input arguments. One of the properties of the function, is that f[i+1,j] is dependent on f[i,j], with this holding true for the 2nd argument as well, i.e in a table I can use the value positioned to the left or above to calculate the subsequent value.

Is there an elegant way of using the previous values of a table while it is being created (in one line without leaving Table[]),initiate C[[0,0]]=f[0,0] and define g[p_,q_] that uses the previous values and its own position?

Why do it like this? f is computationally expensive, using previous values will reduce greatly the number of operations needed.

Why not use functions that remember values they had found? The output of f will take lots of space. I do not want to have two copies, one remembered by the function, and one in the table I am generating.

Thank you for your replies!

$\endgroup$
3
$\begingroup$

You should use RecurrenceTable as @J.M. suggests. But you should also try to do this out yourself. The first step in solving almost any programming challenge like this is to try to solve a simplified version of the problem. In this case, first try to do it with in 1 dimension instead of 2. I will do that with the well known Fibonacci sequence

There are two parts to this. (1) Defining a recursive function and (2) using Memoization.

You can define the n-th Fibonacci number with a function like below:

fib[1] := 1;
fib[2] := 1;
fib[n_] := fib[n - 1] + fib[n - 2];

We want to memoize this function called fib. Please look up memoization if you're not yet familiar with it. To do that, we'd re-write it as:

fib[n_] := fib[n] = fib[n - 1] + fib[n - 2];

Now we've defined it, you can test the function. And we can use Table to build out a table of values:

Table[fib[i], {i, 1, 100}]
$\endgroup$
  • $\begingroup$ I should prolly add the cautionary note that RecurrenceTable[] can sometimes be troublesome to use for partial difference (doubly indexed) equations, so the technique Searke presents here is useful to know. $\endgroup$ – J. M. will be back soon Aug 9 '17 at 15:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.