Opened 6 months ago
Last modified 2 months ago
#30749 new defect
Characteristic polynomial of central Hyperplane arrangement returns wrong result?
Reported by: | jipilab | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-9.4 |
Component: | geometry | Keywords: | hyperplane arrangements, regions |
Cc: | gh-kliem, gh-LaisRast, nailuj | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description (last modified by )
A central hyperplane arrangement must have an even number of regions by central symmetry... yet the one below gets 31 regions(!).
R.<y> = QQ[] v1 = AA.polynomial_root(AA.common_polynomial(y^2 - 3), RIF(RR(1.7320508075688772), RR(1.7320508075688774))) v2 = QQbar.polynomial_root(AA.common_polynomial(y^4 - y^2 + 1), CIF(RIF(RR(0.8660254037844386), RR(0.86602540378443871)), RIF(-RR(0.50000000000000011), -RR(0.49999999999999994)))) my_vectors = (vector(AA, [-v1, -1, 1]), vector(AA, [0, 2, 1]), vector(AA,[v1, -1, 1]), vector(AA, [1, 0, 0]), vector(AA, [1/2, AA(-1/2*v2^3 + v2),0]), vector(AA, [-1/2, AA(-1/2*v2^3 + v2), 0])) sage: H = HyperplaneArrangements(AA,names='xyz') sage: x,y,z = H.gens() sage: A = H(backend="normaliz") sage: for v in my_vectors: ....: a,b,c = v ....: A = A.add_hyperplane(a*x + b*y + c*z) sage: A Arrangement of 6 hyperplanes of dimension 3 and rank 3 sage: A.n_regions() 31 sage: A.is_central() True
Here is another failure in characteristic polynomial:
sage: tau = AA((1+sqrt(5))/2) sage: ncn = [[2*tau+1,2*tau,tau],[2*tau+2,2*tau+1,tau+1],[1,1,1],[tau+1,tau+1,tau],[2*tau,2*tau,tau],[tau+1,tau+1,1],[1,1,0],[0,1,0],[1,0,0],[tau+1,tau,tau]] sage: H = HyperplaneArrangements(AA,names='xyz') sage: x,y,z = H.gens() sage: A = H() sage: for v in ncn: ....: a,b,c = v ....: A = A.add_hyperplane(a*x + b*y + c*z) ....: sage: A.n_regions() Traceback (most recent call last): ... ValueError: arrangement cannot simultaneously have h and -h as hyperplane
Change History (7)
comment:1 Changed 6 months ago by
- Description modified (diff)
comment:2 follow-up: ↓ 3 Changed 6 months ago by
comment:3 in reply to: ↑ 2 Changed 6 months ago by
Replying to chapoton:
The char poly gives the same answer
sage: p = A.characteristic_polynomial() : p x^3 - 6*x^2 + 13*x - 11 sage: p(-1) -31
Yes, this is how the number of regions is computed up to sign. The hyperplane arrangement seems to be sane: computing .regions()
computes the expected (number of) regions.
I asked the number of regions to double-check something and then got this scary answer...
comment:4 Changed 6 months ago by
- Summary changed from Characteristic polynomial of central Hyperplane arrangement results wrong result? to Characteristic polynomial of central Hyperplane arrangement returns wrong result?
comment:5 Changed 6 months ago by
I encountered this problem in some example a long while ago, before I was contributing to Sage myself. A simple workaround is to have n_regions
output len(self.regions())
, which was good enough for me. Of course, this is much slower if one doesn’t want to compute the regions anyway. I don’t understand the characteristic polynomial well enough to figure out the error in there.
comment:6 Changed 4 months ago by
- Description modified (diff)
comment:7 Changed 2 months ago by
- Milestone changed from sage-9.3 to sage-9.4
Setting new milestone based on a cursory review of ticket status, priority, and last modification date.
The char poly gives the same answer