Я сделаю это.Матрица, которую я назову A
, A = [0 sqrt(2) ; 1 1; 1 1; sqrt(2) 0]
, имеет полный ранг столбца, но не полный ранг строки, то есть rank(A) = 2
.Затем вы по существу решаете систему Ax = b
, где x
- ваш весовой вектор.Вы также можете просто сделать x = A\b
в Matlab, который, предположительно, является гораздо более точным ответом.Я получаю тот же ответ, что и вы.Это очень грубое объяснение, когда ваша система не может быть решена для определенного вектора решения, это означает, что не существует такого вектора x
, который можно решить для Ax = b
.Matlab пытается оценить ответ как можно ближе.Я предполагаю, что вы использовали pinv
, если вы посмотрите на справку Matlab, она говорит:
Если A имеет больше строк, чем столбцов и не имеет полного ранга, то проблема переопределения наименьших квадратов
minimize norm(A*x-b)
не имеет уникального решения.Два из бесконечно многих решений -
x = pinv(A)*b
и
y = A\b
Итак, похоже, это ваша проблема.Я бы порекомендовал взглянуть на вашу матрицу φ, если возможно, чтобы придумать более надежную систему.Надеюсь, что это полезно.