سؤال

أحصل على ناقلات Eigen خاطئ (تم تحديده أيضا عن طريق تشغيل عدة مرات للتأكد) عندما أستخدم matrix.eig(). وبعد المصفوفة هي:

1.2290 1.2168 2.8760 2.6370 2.2949 2.6402
1.2168 0.9476 2.5179 2.1737 1.9795 2.2828
2.8760 2.5179 8.8114 8.6530 7.3910 8.1058
2.6370 2.1737 8.6530 7.6366 6.9503 7.6743
2.2949 1.9795 7.3910 6.9503 6.2722 7.3441 
2.6402 2.2828 8.1058 7.6743 7.3441 7.6870

تقوم الوظيفة بإرجاع ناقلات Eigen:

-0.1698  0.6764  0.1442 -0.6929 -0.1069  0.0365
-0.1460  0.6478  0.1926  0.6898  0.0483 -0.2094
-0.5239  0.0780 -0.5236  0.1621 -0.2244  0.6072
-0.4906 -0.0758 -0.4573 -0.1279  0.2842 -0.6688
-0.4428 -0.2770  0.4307  0.0226 -0.6959 -0.2383
-0.4884 -0.1852  0.5228 -0.0312  0.6089  0.2865

Matlab يعطي eigen-vector التالي لنفس المدخلات:

0.1698 -0.6762 -0.1439  0.6931  0.1069  0.0365
0.1460 -0.6481 -0.1926 -0.6895 -0.0483 -0.2094
0.5237 -0.0780  0.5233 -0.1622  0.2238  0.6077
0.4907  0.0758  0.4577  0.1278 -0.2840 -0.6686
0.4425  0.2766 -0.4298 -0.0227  0.6968 -0.2384
0.4888  0.1854 -0.5236  0.0313 -0.6082  0.2857

تعتبر قيم Eigen-for MATLAB و JAMA مطابقة ولكن ناقلات Eigen يتم عكس أول 5 أعمدة في علامة وفقط العمود الأخير دقيق.

هل هناك أي مشكلة على هذا النوع من المدخلات Jama.Matrix.EigenvalueDecomposition.eig()يقبل أو أي مشكلة أخرى مع نفس الشيء؟ من فضلك قل لي كيف يمكنني إصلاح الخطأ. شكرا مقدما.

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

المحلول

لا يوجد خطأ هنا، كلا النتائج صحيحة - كما هو أوقات العددية الأخرى ناقلات eigen.

هناك عدد لا حصر له من ناقلات Eigen التي تعمل - اتفاقيةها العادلة التي تبلغ معظم برامج البرمجيات عن المتجهات التي تحتوي على طول واحد. أن JAMA تقارير ناقلات Eigen تساوي -1 مرات من ماتلاب ربما يكون مجرد قطعة أثرية من الخوارزمية التي استخدموها.

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