Questions about the parameters in the output of solve

asked 2015-03-16 11:06:26 -0600

aldo gravatar image

updated 2015-03-16 12:48:58 -0600

I am writing a program that, among other things, has to solve many systems of polynomial equations (of degree <= 3) determined by the data entered by the user. Each system of equations consists of 3 equations in 3 variables. Sometimes the equations in a given system are redundant, and therefore the output of solve contains parameters (free variables). Is there any way to know which variables in the output of solve are the parameters (without having to look at the actual output in Sage)?

Here is a simple example.

x,y=var('x,y',domain=RR);
eqn1=x+y==1;eqn2=2*x+2*y==2;
soln=solve([eqn1,eqn2],x,y,solution_dict=True);
soln

The output is

[{x: -r6 + 1, y: r6}]

How do I know which variable is the free variable in this case (without looking at the output)? Is it true that the free variable(s) in the output of solve will always be the "last variable(s)" (in the alphabetical order), y in this case? Is there a is_free_variable function (similar to the is_integer function)? In my program, I need to be able to identify the free variables in the solution of solve, y in this case, without looking at the output, and substitute those variables by a few numerical values.

I understand that the solve function in Sage uses the corresponding Maxima function. It seems that Sage does not recognize the Maxima function %rnum_list (which gives the list of parameters introduced in the solutions by solve and algsys). Is there a Sage function that does the same as %rnum_list?

Thanks,

Aldo

edit retag flag offensive close merge delete

Comments

With respect to your last question, possible maxima_calculus("%rnum_list")?

kcrisman gravatar imagekcrisman ( 2015-03-16 12:46:20 -0600 )edit

The "free variable" in your example is r6, and the solution is described by giving how both x and y depend on it. It is certainly not the case that the "alphabetically largest" variable can always be chosen as a free variable, as the system [x==x, y==0] shows.

nbruin gravatar imagenbruin ( 2015-03-16 14:40:52 -0600 )edit