يدعي isposdef () أن بعض (وليس كل) المصفوفات الموجبة شبه المحددة تكون موجبة محددة عندما لا تكون:
julia> A = [1.69 2.21; 2.21 2.89]
2×2 Array{Float64,2}:
1.69 2.21
2.21 2.89
julia> det(A)
0.0
julia> isposdef(A)
true
julia> isposdef(ones(2,2))
false
لست متأكدًا من سبب هذا السلوك - يبدو أن isposdef () يحاول إجراء تحليل Cholesky للمصفوفة ، وجميع المصفوفات الموجبة شبه المحددة لها تحلل Cholesky (على الرغم من عدم وجود IIRC خوارزمية عامة للعثور عليهم) . يبدو لي أنه سيكون من الأسهل فقط تنفيذ معيار سيلفيستور بشيء مثل
sylvestor(A) = issymmetric(A) & all([det(A[1:j, 1:j]) > 0 for j = 1:size(A)[1]])
معلومات الإصدار:
julia> versioninfo()
Julia Version 0.5.0
Commit 3c9d753 (2016-09-19 18:14 UTC)
Platform Info:
System: NT (x86_64-w64-mingw32)
CPU: Intel(R) Xeon(R) CPU E3-1240 v3 @ 3.40GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.7.1 (ORCJIT, haswell)
يمكن أن يتسبب التقريب أثناء حساب عامل تشوليسكي في حدوث ذلك. بشكل عام ، لا يمكن اختبار تفرد مصفوفات الفاصلة العائمة بشكل موثوق. المصفوفة التي قدمتها ليست مفردة في الواقع في تمثيل النقطة العائمة الثنائي
julia> det(big(A))
2.13162820728030047872728228063319445882714347172137703267935663215914838016073e-16
لا يمكن الاعتماد على المحددات بشكل عام في الحسابات العددية لأن المصطلحات تنمو بسرعة كبيرة لذا فإن معيار سيلفرستر ليس عمليًا حقًا. في الحسابات الرقمية ، يكون الاختبار عبر Cholesky هو ما تريده في معظم الحالات وهو رخيص إلى حد ما لذا لا أعتقد أننا سنغيره. ومع ذلك ، قد يكون من الجيد تمديد الوثائق لشرح الطريقة وربما أيضًا استخدام المثال هنا لإظهار القيود. سأضيف تسمية التوثيق إلى المشكلة.
andreasnoack هل يمكن أن يكون هذا ملخص الوضع هنا. سأضيفه إلى المستندات مع المثال بعد الموافقة.
isposdef (A) → منطقي
اختبر ما إذا كانت المصفوفة إيجابية محددة باستخدام تحلل تشوليسكي حيث يصبح معيار سيلفستر غير عملي بسبب الحسابات المحددة غير الموثوقة للأعداد الكبيرة. في حالة مصفوفات النقطة العائمة شبه المحددة الموجبة (غير القابلة للانعكاس) ، قد لا تعمل الوظيفة بالشكل المرغوب بسبب التقريب المتضمن في عامل تشوليسكي وتمثيل النقطة العائمة الثنائي غير المفرد للمصفوفة.
لا أعتقد أنه من الضروري ذكر معيار سيلفستر.
التعليق الأكثر فائدة
يمكن أن يتسبب التقريب أثناء حساب عامل تشوليسكي في حدوث ذلك. بشكل عام ، لا يمكن اختبار تفرد مصفوفات الفاصلة العائمة بشكل موثوق. المصفوفة التي قدمتها ليست مفردة في الواقع في تمثيل النقطة العائمة الثنائي
لا يمكن الاعتماد على المحددات بشكل عام في الحسابات العددية لأن المصطلحات تنمو بسرعة كبيرة لذا فإن معيار سيلفرستر ليس عمليًا حقًا. في الحسابات الرقمية ، يكون الاختبار عبر Cholesky هو ما تريده في معظم الحالات وهو رخيص إلى حد ما لذا لا أعتقد أننا سنغيره. ومع ذلك ، قد يكون من الجيد تمديد الوثائق لشرح الطريقة وربما أيضًا استخدام المثال هنا لإظهار القيود. سأضيف تسمية التوثيق إلى المشكلة.