الجبر الخطي numpy المساعدة الأساسية
-
22-08-2019 - |
سؤال
هذا ما يجب أن أفعله-
لدي هذه المعادلة-
الفأس = ص
حيث 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)
= (أ، ج؛ب، د ) ( س؛ذ)
= ش ت س
إنه واضح إلى حد ما عندما تنظر إلى القيم الموجودة س ش كونها منتجات نقطة من س والأعمدة ش, ، والقيم في شتس كونها منتجات نقطة من س والصفوف من شت, والعلاقة بين الصفوف والأعمدة في التبديل