Нам даны данные n x n. Приблизительно функция. Например. Если нам дано 2(1,1), 3(1,2), 4(2,1), 5(2,2), то мы должны интерполировать 2D-ультином как $0*x*y+y+ 2*х-1$.
МАТЛАБ. Как мы можем получить двумерный многочлен путем интерполяции
Ответы (1)
Эту задачу можно сформулировать как набор линейных уравнений, которые легко решить с помощью функция млразделить.
Позвольте мне проиллюстрировать это на приведенном вами примере.
% from the given example
in = [...
1,1;
1,2;
2,1;
2,2];
out = [...
2;
3;
4;
5];
% compute the variable terms in the polynomial
x = in(:,1);
y = in(:,2);
xy = x .* y;
c = ones(size(out)); % constant
% compute the coefficients of the polynomial
p = [xy,y,x,c] \ out;
% result: [0; 1; 2; -1]
Операторp = [xy,y,x,c] \ out
вычисляет оптимальные коэффициенты (ошибку наименьших квадратов), когда задача имеет чрезмерные ограничения (т. е. не существует решения, точно удовлетворяющего всем уравнениям). Но если уравнений ровно столько, сколько переменных (как в этом примере, есть 4 уравнения из-за 4 пар вход-выход и есть 4 коэффициента, которые необходимо оценить), то коэффициенты можно вычислить просто с помощью p = inv([xy,y,x,c]) * out
.
person
aksadv
schedule
23.01.2017