Для n = 2 ... 11 установить матрицу Вандермонда A размером m × n и для каждого n заданного набора данных a.Matlab - PullRequest
0 голосов
/ 27 ноября 2018

Мне дан набор из 50 точек данных со значениями {a ^ (i), b ^ (i)} для i = 1, ..., 50, хранящихся в массивах a и b.Я знаю, что матрица Вандермонда A имеет размер mxn, где n = 2 ... 11, а m - размер массива a.

Я хочу дополнить данные полиномом степени (n - 1), для n = 2, ..., 11.Чтобы сделать это для каждого n, я должен установить матрицу Вандермонда A размером m × n.

Матрица Вандермонда A решает следующее уравнение: A^T*A*x = A^T*b

Где A ^ Tэто транспонированная матрица, и я уже дал б.Также мы знаем, что Aij = (a^(i))^(j−1) для j = 1, ..., n. Меня смущает то, как установить матрицу для n = 2, .., 11.

Какова моя точка зрения: у меня есть m = length(a);, это установит m = 50;

n = 11;

Тогда A=ones(m,n); Это создает матрицу А, заполненную матрицами правильного размера.

Однако я не уверен, как заполнить матрицу.Я написал следующее для цикла, который, я думал, заполнит матрицу:

for n = 2:11
    j=n;
    for i = 1:50
        A(i,n) = (a^(i))^(j-1);
    end
end

Не могли бы вы помочь мне с настройкой матрицы?

1 Ответ

0 голосов
/ 27 ноября 2018

Вы должны использовать функцию vander.Однако vander вернет матрицу mxm, которая обычно используется для подгонки данных к полиному степени (m-1).Поскольку вы хотите соответствовать полиному степени (n-1), вам нужны только последние n столбцов этой матрицы.

Вот код:

A = vander(a);
A = A(:,end-n+1:end);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...