# How to pick out the largest root of an equation?

I tried the following but it didn't work,

p = x^2 - 7*a*x + 5;
a=5;
m = max((p == 0).solve([x]))

How to pick out the largest root of an equation?

I tried the following but it didn't work,

p = x^2 - 7*a*x + 5;
a=5;
m = max((p == 0).solve([x]))

add a comment

0

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
```

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)
[]
```

0

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
```

Asked: **
2015-01-19 22:22:48 -0600
**

Seen: **741 times**

Last updated: **Jul 15 '15**

Extended Euclid with polynomials

Not understandable error when solving polynomial equation

solving system of polynomial equations over reals using newton method

Characteristic polynomial wont be used in solve

Why doesn't Sage evaluate to zero on its own found roots?

How to extract coefficient terms from a differential equation, as for polynomial?

Solving polynomial equations with arbitrary coefficients

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.