Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

In turns out that these equation systems can be solved more quickly in SR than in the relevant polynomial ring over QQ:

sage: reset()
sage: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:R1.<a1,b1,b2,c1,c2> = QQ[]
:S2=[5*(9 + 2*a1^2 - b2),
:    5*(-324 + 4*a1*b1 + b2^2 - c2), 
:    10*(729 + 2*a1 + b1^2 + 243*b2 - 9*b2^2 + 2*a1*c1 + b2*c2), 
:    5*(6561 + 4*b1 - 2916*b2 + 4*b1*c1 + 486*c2 - 36*b2*c2 + c2^2), 
:    2*(-59048 + 10*c1 + 5*c1^2 - 7290*c2 - 45*c2^2)+1889566]
:J2=R1.ideal(*S2)
:J2.dimension()
:
:--
0
sage: %time Sol2=J2.variety()
CPU times: user 1min 2s, sys: 67.9 ms, total: 1min 3s
Wall time: 1min 3s
sage: Sol2
[{c2: -243, c1: 0, b2: 9, b1: 0, a1: 0},
 {c2: -243, c1: -2, b2: 9, b1: 0, a1: 0}]

So far, so good. Solving in SR is faster but find more "rational" solutions :

sage: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:# Conversion to SR
:SV=list(map(lambda u:var(repr(u).upper()),R1.gens()))
:D1=dict(zip(R1.gens(),SV))
:
:--
sage: %time Sol2Rat=[v  for v in solve(list(map(lambda u:u.subs(D1), S2)), SV, s
....: olution_dict=True) if all([v[u] in QQ for u in v.keys()])]
CPU times: user 4.95 s, sys: 40.2 ms, total: 4.99 s
Wall time: 4.22 s
sage: Sol2Rat
[{A1: 0.003086423021009911,
  B1: -5.88025749412356e-08,
  B2: 9.00001905233677,
  C1: -1.0,
  C2: -242.9996569468267},
 {A1: -0.003086423021009911,
  B1: 5.88025749412356e-08,
  B2: 9.00001905233677,
  C1: -1.0,
  C2: -242.9996569468267},
 {A1: 6.593646591661152,
  B1: -405.391447368421,
  B2: 95.95235186316432,
  C1: 5160.704545454545,
  C2: -1809.177777777778},
 {A1: -6.590559824368825,
  B1: 404.8549618320611,
  B2: 95.87096774193549,
  C1: -5152.047619047619,
  C2: -1805.641304347826},
 {A1: -6.593646591661152,
  B1: 405.391447368421,
  B2: 95.95235186316432,
  C1: -5162.704545454545,
  C2: -1809.177777777778},
 {A1: 6.590559824368825,
  B1: -404.8549618320611,
  B2: 95.87096774193549,
  C1: 5150.047619047619,
  C2: -1805.641304347826},
 {A1: 0, B1: 0, B2: 9, C1: 0, C2: -243},
 {A1: 0, B1: 0, B2: 9, C1: -2, C2: -243}]
sage: len(Sol2Rat)
8

That makes me question the validity of the test of rationality v[u] in QQ. Advice ?