Difference between solve's `r` and `c` solution parameters
Hello, everybody! The author of this related question pointed out an interesting fact: if a system of equations has parameters in its solutions, sometimes the parameters are written as rN
and sometimes as cN
, where N
is a positive integer.
As far as I can tell, the r
s are produced by Maxima's solve()
function, while the c
s are produced by Maxima's to_poly_solve()
function. Indeed, consider the following system (obtained from a comment in the mentioned question):
a_1, a_2, b_1, b_2 = var('a_1, a_2, b_1, b_2')
eq1 = a_2^2 - a_2*a_1^2 == 0
eq2 = a_2*b_2 - 2*a_1*a_2*b_1 + a_2*b_2 - a_1^2*b_1 == 0
eqs = [eq1, eq2]
If we solve with
from sage.calculus.calculus import maxima
m = maxima(eqs)
sols = m.solve([a_1,a_2,b_1,b_2])
sols._sage_()
then, we get
[[a_1 == 0, a_2 == 0, b_1 == r31, b_2 == r32],
[a_1 == r33, a_2 == 0, b_1 == 0, b_2 == r34],
[a_1 == r35, a_2 == r35^2, b_1 == r36, b_2 == 1/2*(2*r35 + 1)*r36]]
The r
parameters seem to indicate real parameters, as indicated by this answer by @kcrisman (sorry to ping you). However, it can clearly be seen that complex parameters are also acceptable. Moreover, the code
from sage.calculus.calculus import maxima
m = maxima(eqs)
sols = m.to_poly_solve([a_1,a_2,b_1,b_2])
sols._sage_()
then, we get
[[a_1 == 0, a_2 == 0, b_1 == c1973, b_2 == c1974],
[a_1 == c1975, a_2 == 0, b_1 == 0, b_2 == c1976],
[a_1 == c1977, a_2 == c1977^2, b_1 == c1978, b_2 == 1/2*(2*c1977 + 1)*c1978]]
There are two possibilities here:
to_poly_solve
is more sophisticated, so it works with complex parameters.- The parameters don't indicate real or complex.
Could somebody clarify the difference between r
and c
parameters?
Thank in advance for your answers!