МАТЛАБ. Как мы можем получить двумерный многочлен путем интерполяции

Нам даны данные n x n. Приблизительно функция. Например. Если нам дано 2(1,1), 3(1,2), 4(2,1), 5(2,2), то мы должны интерполировать 2D-ультином как $0*x*y+y+ 2*х-1$.


person Dr Amit K Awasthi    schedule 23.01.2017    source источник


Ответы (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