سؤال

هذا ما يجب أن أفعله-

لدي هذه المعادلة-

الفأس = ص

حيث A هي مصفوفة M*n عقلانية (M <= n) ، و X و Y هي متجهات الحجم الصحيح.أعرف A وy، ولا أعرف ما يساوي x.أعلم أيضًا أنه لا يوجد X حيث يساوي AX بالضبط Y.أريد أن أجد المتجه x 'مثل هذا الفأس' أقرب ما يكون إلى y.بمعنى أن (Ax' - y) أقرب ما يمكن إلى (0,0,0,...0).

أعلم أنني بحاجة إلى استخدام إما وظيفة 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

لا أفهم الوثائق على الإطلاق.هل يمكن لشخص ما أن يريني كيفية استخدام هذه الوظائف لحل مشكلتي.

شكرًا جزيلاً!!!

هل كانت مفيدة؟

المحلول

وSVD هو حالة م <ن، لأنك لا حقا لديهم درجة كافية من الحرية.

وومستندات لlstsq لا تبدو مفيدة جدا. أعتقد أن هذا أقل المناسب مربع، في القضية حيث m> ن.

إذا م <ن، فأنت تريد <لأ href = "http://web.mit.edu/be.400/www/SVD/Singular_Value_Decomposition.htm" يختلط = "نوفولو noreferrer"> SVD .

نصائح أخرى

تحديثها قد يكون قليلا أكثر فائدة ... يبدو وكأنك تريد

numpy.linalg.lstsq(A, y)

يمنحك SVD للمصفوفة A مصفوفات متعامدة U و V ومصفوفة قطرية Σ بحيث

أ = ش Σ الخامس ت

أين ش شت = أنا ; الخامس الخامست = أنا

وبالتالي، إذا

س أ = ذ

ثم

س ش Σ الخامس ت = ذ

س ش Σ الخامس ت الخامس = ذ الخامس

س ش Σ = ذ الخامس

ش ت س Σ = ذ الخامس

س Σ = ش ذ الخامس

س = Σ -1 ش ت ذ الخامس

س = الخامس ت Σ -1 ش ت ذ

لذلك نظرا لSVD أ يمكنك الحصول س.


على الرغم من المصفوفات العامة أ ب != ب أ, ، هذا صحيح بالنسبة للمتجهات س الذي - التي × يو == ش ت س.

على سبيل المثال، النظر في س = (س، ص)، ش = (أ، ب؛ج، د ):

س ش = ( س، ص ) ( أ، ب ;ج، د)

= ( xa+yc، xb+yd )

= (الفأس+cy، bx+dy)

= (أ، ج؛ب، د ) ( س؛ذ)

= ش ت س

إنه واضح إلى حد ما عندما تنظر إلى القيم الموجودة س ش كونها منتجات نقطة من س والأعمدة ش, ، والقيم في شتس كونها منتجات نقطة من س والصفوف من شت, والعلاقة بين الصفوف والأعمدة في التبديل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top