How to pick out the largest root of an equation?
I tried the following but it didn't work,
p = x^2 - 7ax + 5; a=5; m = max((p == 0).solve([x]))
I tried the following but it didn't work,
p = x^2 - 7ax + 5; a=5; m = max((p == 0).solve([x]))
First, here is a classical way to get solutions of you equation:
sage: a = 5
sage: p = x^2 - 7*a*x + 5
sage: p.solve(x)
[x == -1/2*sqrt(1205) + 35/2, x == 1/2*sqrt(1205) + 35/2]
So, you have a list of solutions. Each solution is of the form x == -1/2*sqrt(1205) + 35/2
which is a symbolic expression. You can get the right hand side of such an equality with the rhs()
method:
sage: [s.rhs() for s in p.solve(x)]
[-1/2*sqrt(1205) + 35/2, 1/2*sqrt(1205) + 35/2]
Then, you can take the maximal element of this list:
sage: max([s.rhs() for s in p.solve(x)])
1/2*sqrt(1205) + 35/2
Alternatively, instead of getting solutions as symbolic expressions, you can get them as Python dictionaries:
sage: p.solve(x, solution_dict=True)
[{x: -1/2*sqrt(1205) + 35/2}, {x: 1/2*sqrt(1205) + 35/2}]
So, you can get each solution by looking at the x
values:
sage: [s[x] for s in p.solve(x, solution_dict=True)]
[-1/2*sqrt(1205) + 35/2, 1/2*sqrt(1205) + 35/2]
Then, as before, you can take the maximal element of this list:
sage: max([s[x] for s in p.solve(x, solution_dict=True)])
1/2*sqrt(1205) + 35/2
If some of the roots turned out to be complex then would "max" throw up some kind of an error message which as an user I can catch ?
No, since Sage gives an ordering between complex numbers, you will get the maximum for this ordering:
sage: max([1+I, 2*I])
I + 1
A possibility is to assume that x
is real:
sage: p = x^2 + 1
sage: p.solve(x)
[x == -I, x == I]
sage: assume(x, 'real')
sage: p.solve(x)
[]
Use subs
(wrong solution):
sage: p = x^2 - 7*a*x + 5; p.subs(a=5)
x^2 - 35*x + 5
sage: max(p.solve([x]))
x == -1/2*sqrt(1205) + 35/2
But this not the largest root...
The problem with your approach is that you take the maximum of symbolic expressions, which are equalities (not values of solutions), so the ordering of those is not very clear.
Asked: 10 years ago
Seen: 2,302 times
Last updated: Jul 15 '15