Поскольку вы помечаете Mathematica, я буду использовать функции Mathematica в качестве ссылки.
Если вас интересует произвольная подгонка ваших данных с помощью гладкой функции, вы можете использовать интерполяцию. Э.Г.
a = {1, 2, 3}; b = {2, 4, 8};
f = Interpolation[Transpose[{a, b}]];
(* Graph the interpolation function *)
Show[Plot[f[x], {x, 1, 3}], Graphics[Point /@ Transpose[{a, b}]],
PlotRange -> {{0, 4}, {0, 9}}, Frame -> Automatic, Axes -> None]
В интерполяции используются кусочные полиномы. Вы можете сделать то же самое на своем любимом языке программирования, если вы знаете или хотите немного узнать о численных методах, особенно B-Splines.
Если вместо этого вы что-то знаете о своих данных, например, что он имеет форму c d ^ x, тогда вы можете сделать минимизацию, чтобы найти неизвестные (в данном случае c и d). Если ваши данные на самом деле сгенерированы из формы c d ^ x, то подгонка будет справедливой, в противном случае ошибка минимизируется в смысле наименьших квадратов Итак, для ваших данных:
FindFit[Transpose[{a, b}], c d^x, {c, d}, {x}]
Отчеты:
{c -> 1., d -> 2.}
Указывает, что ваша функция 2 ^ x, как вы и раньше знали.