У меня есть три вектора: один из X-местоположений, другой из Y-местоположений, а третий - f (x, y). Я хочу найти интерполяционный полином алгебраического выражения (используя Matlab), так как позже я буду использовать результат в задаче оптимизации в AMPL. Насколько мне известно, не существует функций, возвращающих интерполяционный полином.
Я пробовал https://la.mathworks.com/help/matlab/ref/griddedinterpolant.html, но эта функция дает интерполированные значения только в определенных точках.
Я также пробовал https://la.mathworks.com/help/matlab/ref/triscatteredinterp.html, как предложено в Функциональная форма 2D-интерполяции в Matlab, но вывод не является коэффициентом многочлена. Я не вижу его, кажется, он заперт внутри какой-то странной переменной.
Это небольшая программа, которую я сделал, чтобы проверить, что я делаю:
close all
clear
clc
[X,Y] = ndgrid(1:10,1:10);
V = X.^2 + 3*(Y).^2;
F = griddedInterpolant(X,Y,V,'cubic');
[Xq,Yq] = ndgrid(1:0.5:10,1:0.5:10);
Vq = F(Xq,Yq);
mesh(Xq,Yq,Vq)
figure
mesh(X, Y, V)
Мне нужен вывод, который вместо возврата значения в точках сетки возвращает все, что он использовал для вычисления указанных значений. Я знаю, что это можно сделать в математике с помощью https://reference.wolfram.com/language/ref/InterpolatingPolynomial.html, поэтому мне кажется странным, что Matlab не может.
f(x,y)
? - person obchardon   schedule 30.09.2019