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]))
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.
Please start posting anonymously - your entry will be published after you log in or create a new account.
Asked: 10 years ago
Seen: 2,308 times
Last updated: Jul 15 '15
Factorization of non-commutative Laurent polynomials
Find specific linear combination in multivariate polynomial ring
Issues with: Solving a polynomial equation with multiple variables
How to extract coefficient terms from a differential equation, as for polynomial?
Ideals of non-commutative polynomials
Trigonometric Equation Solving: Not Terminating