Вы можете использовать методы полиномиальной интерполяции для интерполяции функции одним способом, а затем выполнить обратную интерполяцию, чтобы найти обратную функцию.
Вот пример кода в MATLAB:
function [a] = Coef(x, y)
n = length(x);
a = y;
for j = 2:n
for i = n:-1:j
a(i) = (a(i) - a(i-1)) / (x(i) - x(i-j+1));
end
end
end
function [val] = Eval(x, a, t)
n = length(x);
val = a(n);
for i = n-1:-1:1
val = a(i) + val*(t-x(i));
end
end
Он строит таблицу разделенных разностей и оценивает функцию на основе интерполяции Ньютонов.
Тогда, если ваши наборы точекравны x и y (как векторы одинаковой длины, где x (i) соответствует y (i), ваша функция прямой интерполяции при значении n будет Eval(x, Coef(x, y), n)
, а функция обратной интерполяции будет Eval(y, Coef(y, x), n)
.
В зависимости от вашего языка, возможно, есть гораздо более чистые способы сделать это, но это не совсем понятно из математики.
Вот выдержка из учебника, которая используется в моих численных методахкласс: Google Book Link