كيف يمكنني استخدام تقريب المربعات الصغرى في ماتلاب؟

StackOverflow https://stackoverflow.com/questions/1832429

سؤال

للحصول على مهمة منزلية في الجبر الخطي، لقد حللت المعادلة التالية باستخدام MATLAB \ المشغل (وهو الطريقة الموصى بها للقيام بذلك):

a = [0.2 0.25؛ 0.4 0.5؛ 0.4 0.25]؛ ذ = [0.9 1.7 1.2]؛ X =  y

الذي ينتج الجواب التالي:

X = 1.7000 2.0800

بالنسبة للجزء التالي من المهمة، من المفترض أن أحل نفس المعادلة باستخدام تقريب المربعات الصغرى (ثم قارنها ضد القيمة السابقة لمعرفة مدى دقة التقريب).

كيف يمكنني أن أجد طريقة للقيام بذلك في ماتلاب؟

العمل السابق: لقد وجدت الوظيفة lsqlin, ، يبدو أنه قادر على حل معادلات النوع أعلاه، لكنني لا أفهم الحجج التي لتزويدها ولا في أي ترتيب.

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

المحلول

mldivide., ("\") فعلا يفعل ذلك أيضا. وفقا ل توثيق:

إذا كانت مصفوفة M-N-N مع M ~ = N و B هي متجه عمود مع مكونات M، أو مصفوفة مع العديد من هذه الأعمدة، ثم X = A B هو الحل الموجود في المربعات الصغرى - أو نظام مثبطا من المعادلات الفسي = ب. ب. بمعنى آخر، يقلل X القاعدة (A * X - B)، طول الفأس المتجهة - B. يتم تحديد K المرتبة ك من A من التحلل QR مع محوري العمود (انظر خوارزمية للحصول على التفاصيل). الحل المحسوب X لديه في معظم العناصر K غير صفري لكل عمود. إذا كان k <n، فهذا لا يكون هذا هو نفس الحل مثل x = pinv (a) * b، الذي يعيد حل المربعات الصغرى.

حقا، ما فعلته في الواجب الأول هو حل المعادلة باستخدام LSE.

نصائح أخرى

هل تنطوي مهمتك على الترميز الصريح بتقريب المربعات الصغرى، أو فقط باستخدام وظيفة أخرى متوفرة في MATLAB؟ إذا كنت تستطيع استخدام وظيفة أخرى، فإن خيار واحد هو Lsqr.:

x = lsqr(A,y);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top