базовая справка по линейной алгебре - PullRequest
2 голосов
/ 16 мая 2009

Это то, что мне нужно сделать-

У меня есть это уравнение-

Топор = у

Где A - рациональная матрица m * n (m <= n), а x и y - векторы правильный размер. Я знаю А и у, я не знаю, что х равен. я Также известно, что нет x, где Ax равен ровно y. Я хочу найти вектор x 'такой, что Ax' как можно ближе к у. Это означает, что (Ax '- y) максимально приближено к (0,0,0, ... 0). </p>

Я знаю, что мне нужно использовать функцию lstsq: http://www.scipy.org/doc/numpy_api_docs/numpy.linalg.linalg.html#lstsq

или функция svd: http://www.scipy.org/doc/numpy_api_docs/numpy.linalg.linalg.html#svd

Я вообще не понимаю документацию. Может кто-нибудь, пожалуйста, покажите мне, как использовать эти функции для решения моей проблемы.

Большое спасибо !!!

Ответы [ 3 ]

2 голосов
/ 16 мая 2009

Обновленная документация может быть более полезной ... выглядит так, как вы хотите

numpy.linalg.lstsq(A, y)
0 голосов
/ 16 мая 2009

SVD матрицы A дает вам ортогональные матрицы U и V и диагональную матрицу & Sigma; такой, что

A = U & Sigma; V T

, где U U T = I ; V V T = I

Следовательно, если

x A = y

тогда

x U & Sigma; V T = y

x U & Sigma; V T V = у В

x U & Sigma; = y V

U T x & Sigma; = y V

x & Sigma; = U y V

x = & Sigma; -1 U T y V

x = V T & Sigma; -1 U T y

Таким образом, с учетом SVD A вы можете получить x .


Хотя для общих матриц AB ! = BA верно для вектора x , что x U == U T x .

Например, рассмотрим x = (x, y), U = (a, b; c, d):

x U = (x, y) (a, b; c, d)

= (xa + yc, xb + yd)

= (топор + cy, bx + dy)

= (a, c; b, d) (x; y)

= U T x

Это довольно очевидно, когда вы смотрите на значения в x U , представляющих собой точечные произведения x и столбцы U и значения в U T x являются точечными произведениями x и строк U T , а соотношение строк и столбцов в транспозиции

0 голосов
/ 16 мая 2009

SVD для случая m

Документы для lstsq не выглядят очень полезными. Я считаю, что это метод наименьших квадратов для случая, когда m> n.

Если m SVD .

...