Julia: isposdef () غير صحيح

تم إنشاؤها على ١٢ يناير ٢٠١٧  ·  3تعليقات  ·  مصدر: JuliaLang/julia

يدعي 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)
doc linear algebra

التعليق الأكثر فائدة

يمكن أن يتسبب التقريب أثناء حساب عامل تشوليسكي في حدوث ذلك. بشكل عام ، لا يمكن اختبار تفرد مصفوفات الفاصلة العائمة بشكل موثوق. المصفوفة التي قدمتها ليست مفردة في الواقع في تمثيل النقطة العائمة الثنائي

julia> det(big(A))
2.13162820728030047872728228063319445882714347172137703267935663215914838016073e-16

لا يمكن الاعتماد على المحددات بشكل عام في الحسابات العددية لأن المصطلحات تنمو بسرعة كبيرة لذا فإن معيار سيلفرستر ليس عمليًا حقًا. في الحسابات الرقمية ، يكون الاختبار عبر Cholesky هو ما تريده في معظم الحالات وهو رخيص إلى حد ما لذا لا أعتقد أننا سنغيره. ومع ذلك ، قد يكون من الجيد تمديد الوثائق لشرح الطريقة وربما أيضًا استخدام المثال هنا لإظهار القيود. سأضيف تسمية التوثيق إلى المشكلة.

ال 3 كومينتر

يمكن أن يتسبب التقريب أثناء حساب عامل تشوليسكي في حدوث ذلك. بشكل عام ، لا يمكن اختبار تفرد مصفوفات الفاصلة العائمة بشكل موثوق. المصفوفة التي قدمتها ليست مفردة في الواقع في تمثيل النقطة العائمة الثنائي

julia> det(big(A))
2.13162820728030047872728228063319445882714347172137703267935663215914838016073e-16

لا يمكن الاعتماد على المحددات بشكل عام في الحسابات العددية لأن المصطلحات تنمو بسرعة كبيرة لذا فإن معيار سيلفرستر ليس عمليًا حقًا. في الحسابات الرقمية ، يكون الاختبار عبر Cholesky هو ما تريده في معظم الحالات وهو رخيص إلى حد ما لذا لا أعتقد أننا سنغيره. ومع ذلك ، قد يكون من الجيد تمديد الوثائق لشرح الطريقة وربما أيضًا استخدام المثال هنا لإظهار القيود. سأضيف تسمية التوثيق إلى المشكلة.

andreasnoack هل يمكن أن يكون هذا ملخص الوضع هنا. سأضيفه إلى المستندات مع المثال بعد الموافقة.
isposdef (A) → منطقي
اختبر ما إذا كانت المصفوفة إيجابية محددة باستخدام تحلل تشوليسكي حيث يصبح معيار سيلفستر غير عملي بسبب الحسابات المحددة غير الموثوقة للأعداد الكبيرة. في حالة مصفوفات النقطة العائمة شبه المحددة الموجبة (غير القابلة للانعكاس) ، قد لا تعمل الوظيفة بالشكل المرغوب بسبب التقريب المتضمن في عامل تشوليسكي وتمثيل النقطة العائمة الثنائي غير المفرد للمصفوفة.

لا أعتقد أنه من الضروري ذكر معيار سيلفستر.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات