То, что вы хотите сделать, называется полиномиальная интерполяция. Существует много методов (см. http://en.wikipedia.org/wiki/Polynomial_interpolation), но вы должны иметь верхнюю границу U от степени полинома и не менее U + 1 значений.
Если у вас есть последовательные значения, то есть простой алгоритм.
Учитывая последовательность x1, x2, x3, ..., пусть Delta (x) - последовательность разностей x2 - x1, x3 - x2, x4 - x3, .... Если у вас есть последовательные значения полинома степени n, то n-я итерация Delta является постоянной последовательностью.
Например, многочлен п^3:
1, 8, 27, 64, 125, 216, ...
7, 19, 37, 61, 91, ...
12, 18, 24, 30, ...
6, 6, 6, ...
Для получения следующего значения, заполнить еще на 6, а затем работать в обратном направлении.
6, 6, 6, 6 = 6, ...
12, 18, 24, 30, 36 = 30 + 6, ...
7, 19, 37, 61, 91, 127 = 91 + 36, ...
1, 8, 27, 64, 125, 216, 343 = 216 + 127, ...
Ограничение на количество приведенных выше значений гарантирует, что ваша последовательность никогда не станет пустой при выполнении различий.
Ну первые два легко, но как обобщить? – JonH
Я думаю, что вторая строка возвращает 60 ... –
Да, спасибо Маурицио. Пропустил это. : p –