On Thu, 4 Nov 2021 at 23:13, Zoufiné Lauer-Baré <[email protected]> wrote:
>
> Dear all,
Hi and thanks for reporting this.
> I just created an issue in the SymPy github project (Zero in SymPy
> #22425 opened 2 minutes ago by zolabar). Here goes the content, may be
> someone knows this topic and there are already issues on this.
>
> Sometimes SymPy hesitates to return zero... I've encountered this problem in
> three applications. There may be a solution to this already, however I
> haven't seen it yet.
>
> Problem 1: Real symmetric Matrices have only real eigenvalues...
> Problem 2: Analiticity of Möbius transform
> Problem 3: Stationary Points of Himmelblau Function
>
> Problem 1:
>
> A = sym.Matrix(([1, 4, -2],
> [4, 0, 0],
> [-2, 0, 3]))
>
> should have only real eigenvalues, since it is symmetric, but SymPy returns
> complex eigenvalues with an imaginary part of the orrder 10**(-126)...
I'm not sure what the issue here is:
In [42]: A = sym.Matrix(([1, 4, -2],
...: [4, 0, 0],
...: [-2, 0, 3]))
In [43]: nroots(A.charpoly())
Out[43]: [-3.79943573866291, 2.29524145208425, 5.50419428657866]
In [44]: {e.evalf() for e in A.eigenvals()}
Out[44]: {-3.79943573866291 + 0.e-20⋅ⅈ, 2.29524145208425 + 0.e-20⋅ⅈ,
5.50419428657866 + 0.e-20⋅ⅈ}
The complex parts here show as zero. You can get rid of them
completely with chop:
In [45]: {e.evalf(chop=True) for e in A.eigenvals()}
Out[45]: {-3.79943573866291, 2.29524145208425, 5.50419428657866}
The source of the complex part is casus irreducibilis:
https://en.wikipedia.org/wiki/Casus_irreducibilis
That shows why it is better to compute numerical roots directly from
the polynomial rather than from a radical expression for the roots.
I don't immediately have time to investigate the other two points
(copy-pasting the code didn't work).
--
Oscar
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/CAHVvXxSTY4mUUV5cYVvRc77yKUURGKR%3DCOoBm0ZAhUtgxXkV%2Bg%40mail.gmail.com.