القضية مع وظيفة تحلل Eigenvalue جاما
-
23-08-2019 - |
سؤال
أحصل على ناقلات 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 مرات من ماتلاب ربما يكون مجرد قطعة أثرية من الخوارزمية التي استخدموها.