Non-real solution incorrectly certified as real #562
Closed
oskarhenriksson
started this conversation in
General
Replies: 1 comment 1 reply
-
Hi Oskar,
you have found a bug: According to Lemma 7.1 in https://arxiv.org/pdf/2011.05000.pdf the reality check only works, if the system is real. This is not the case in your example. The problem in the code is that the reality of the system is never checked. I will fix this bug. Thanks for noticing!
Best wishes,
Paul
… On 16. Jan 2024, at 23:26, Oskar Henriksson ***@***.***> wrote:
Hi! Mikkel Dons Demsig and I are a bit puzzled by the following example, where certify incorrectly claims that a solution is real:
using HomotopyContinuation
@var x
F = System([x-(3+1e-14*im)])
result = solve(F)
vector_of_solutions = solutions(result)
certification_result = certify(F,vector_of_solutions)
certificate = first(certificates(certification_result))
In fact, it turns out that both is_real(certificate) and is_complex(certificate) returns true, so certification_result is displayed in the following somewhat funny way:
CertificationResult
===================
• 1 solution candidates given
• 1 certified solution intervals (1 real, 1 complex)
• 1 distinct certified solution intervals (1 real, 1 complex)
How is this happening? It seems like the relevant function is ε_inflation_krawczyk, but I don't see how the isinteror check could accidentally give an incorrect true.
—
Reply to this email directly, view it on GitHub <#562>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AEU5XQMOFYOZK6A5NNMEHVLYO35AJAVCNFSM6AAAAABB5RXI3OVHI2DSMVQWIX3LMV43ERDJONRXK43TNFXW4OZWGA4DGOJZG4>.
You are receiving this because you are subscribed to this thread.
|
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi! My student Mikkel Dons Demsig and I are a bit puzzled by the following example, where
certify
incorrectly claims that a solution is real:In fact, it turns out that both
is_real(certificate)
andis_complex(certificate)
return true, socertification_result
is displayed in the following (somewhat funny!) way:How is this happening? It seems like the relevant function is
ε_inflation_krawczyk
, but I don't see how the realness check withisinterior
could accidentally give an incorrect true when the imaginary part is small.Edit: As Paul points out, the certified solution interval indeed looks correct:
Beta Was this translation helpful? Give feedback.
All reactions