Ask Your Question
5

Extract solutions from solve

asked 13 years ago

Rejeesh gravatar image

updated 13 years ago

kcrisman gravatar image

I am new to sage. So, sorry if my question is trivial.

How can I get the values of a solve operation. Say I have

x = var('x');
f = x^2 - 5*x + 6;
z = solve(f = 0, x);
show(z);

gives me something like

[x == 2, x == 3]

How can I take the value 2 or 3 from that?

Also, when I was trying to solve another equation (quiet a long one), I get the solution as

[0 = something something.....]

What does that zero mean?

Preview: (hide)

2 Answers

Sort by » oldest newest most voted
5

answered 13 years ago

kcrisman gravatar image

I am new to sage. So, sorry if my question is trivial.

Not at all! Likely you could have found this by doing a little more reconnaissance, but hopefully others in the same boat will now find this instead.

Incidentally, x is the only predefined variable, so your first line is not needed. Also, the semicolons are not necessary to suppress output.

I hope this example answers your questions.

sage: f = x^2 - 5*x + 6
sage: z = solve(f,x) # f==0 is implicit
sage: z
[x == 3, x == 2]
sage: z[0]
x == 3
sage: z[1]
x == 2
sage: z[0].rhs()
3
sage: z[0].lhs()
x

Essentially, Sage returns Python lists, and this is how to extract stuff from them. It returns a symbolic equality, and then the rhs() method gets the "right hand side".

There is another way to get solutions as Python dicts, but that is slightly more advanced so maybe someone else can comment on that.

Preview: (hide)
link

Comments

@kcrisman Thanks a lot for that. Those semicolons come from C (and maybe a bit from Octave/Matlab). I just can't think of a world without semicolons. And like you said, a bit of Google and some docs would have answered me.

Rejeesh gravatar imageRejeesh ( 13 years ago )

No problem! In fact, semicolons *do* have a purpose in Python. Compare two lines `2+2` and `2+3` with `2+2; 2+3` in a notebook cell.

kcrisman gravatar imagekcrisman ( 13 years ago )
5

answered 13 years ago

mhampton gravatar image

Sometimes - especially in more complicated multivariate cases - using the option solution_dict = True is convenient. It doesn't really help here, but for your example:

x = var('x')
f = x^2 - 5*x + 6
z = solve(f, x, solution_dict=True)
for solution in z:
    print x.subs(solution)

3
2
Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 13 years ago

Seen: 10,039 times

Last updated: Feb 24 '12