Ask Your Question

About finding roots of polynomials in specific domains

asked 2015-06-11 16:31:40 -0600

Phoenix gravatar image

updated 2015-06-11 16:33:17 -0600

I have two polynomials $p(x)$ and $q(x)$ and I want to know if there are roots of the equation $\frac{p'}{p} = \frac{q'}{q}$ in the domain $(a,\infty)$ , where $a = max { roots(p), roots(q) } $

This is the same as asking for the roots of the polynomial, $p'q - pq' = 0$ in the same domain.

  • Can something in Sage help?
edit retag flag offensive close merge delete

2 answers

Sort by » oldest newest most voted

answered 2015-06-12 06:48:19 -0600

vdelecroix gravatar image

updated 2015-06-12 06:50:33 -0600


def are_there_roots(p, q):
    return False
edit flag offensive delete link more


What if, for example, $p=q\neq 0$ or if $p'$ and $q'$ have a common root that is larger than $a$ ?

tmonteil gravatar imagetmonteil ( 2015-06-12 07:56:14 -0600 )edit

I think it's hard for $p'$ and $q'$ to have a common root larger that the largest root of $p$ and $q$... I am impressed by how exact yet uninformative this answer is!

B r u n o gravatar imageB r u n o ( 2015-06-12 09:15:03 -0600 )edit

@b-r-u-n-o wrote:

I think it's hard f=or p′ and q′ to have a common root larger that the largest root of p and q...

What about, say, $p=q=x^3+8$ whose single real root is -2, but whose derivative have root 0 ?

tmonteil gravatar imagetmonteil ( 2015-06-12 10:41:18 -0600 )edit

max(roots(p), roots(q)) is ambiguous.

vdelecroix gravatar imagevdelecroix ( 2015-06-12 15:55:34 -0600 )edit

answered 2015-06-12 04:28:20 -0600

B r u n o gravatar image

updated 2015-06-12 04:30:13 -0600

I would do as follows:

sage: r = p.derivative()*q - q*p.derivative()
sage: R_r = r.roots(RR)

This gives you the real roots of r in the variable R_r. Now to filter the roots that make sense to you, you need to compute the roots of p and q:

sage: R_p = p.roots(RR)
sage: R_q = q.roots(RR)

In R_p and R_q, you have the real roots of p and q, given as pairs with the root and the multiplicity. To find a:

sage: a = max([x[0] for x in R_p] + [x[0] for x in R_q])

And finally, the roots you want:

sage: R = [x in R_r if x[0] > a]
edit flag offensive delete link more


Thanks! Let me try this.

Phoenix gravatar imagePhoenix ( 2015-06-12 12:56:35 -0600 )edit

If you just wrote "p.roots()" would it give all the roots? (and not just the reals)

Phoenix gravatar imagePhoenix ( 2015-06-12 12:57:23 -0600 )edit

And what would be a command to check if R turned out to be empty? I need some kind of an error catching for that.

Phoenix gravatar imagePhoenix ( 2015-06-12 12:58:16 -0600 )edit

If I am reading the code correctly and R is a list, then you could try len(R) == 0 . If I misunderstood, then nevermind.

Wizq gravatar imageWizq ( 2015-06-13 17:48:40 -0600 )edit

Your Answer

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

Add Answer

Question Tools

1 follower


Asked: 2015-06-11 16:31:40 -0600

Seen: 245 times

Last updated: Jun 12 '15