Thread: intersection of a circle and a cubic equation

1. intersection of a circle and a cubic equation

Other people have given solutions for a circle and a parabola, but they mainly involve finding a quadratic in x^2, suitable as they want 2 solutions.

In this case, I need a single solution to a circle/cubic problem. I know there's only one solution because the radius of the circle has been set to the smallest distance between the line and the centre point.

I tried substituting the cubic equation into the equation for the circle, then after a lot of bracket expanding (which I've checked over and over), I still don't get any intersection points.

I end up with a 6th order equation (which I believe to be correct - just thinking logically, it seems there can be 6 intercepts between a cubic and a circle). However, finding the roots of this equation (using the roots function in matlab) doesn't work :s

This is where i'm at so far:

With (x-xp)^2 + (y-yp)^2 = dc^2
And y = ax^3 + bx^2 + cx + d

After substitution, expansion and simplification:
0=(a^2)x^6 + (2ab)x^5 + (2ac + b^2)x^4 + (2ad + 2bc - 2ayp)x^3 + (2bd + c^2 - 2byp + 1)x^2 + (2cd - 2cyp -2xp)x + (d^2 + yp^2 - 2dyp + xp^2 - dc^2)

I can't see why this doesn't give me a suitable value for x intercept point. Can someone please help me out?

Thanks

2. Originally Posted by potticus
Other people have given solutions for a circle and a parabola, but they mainly involve finding a quadratic in x^2, suitable as they want 2 solutions.

In this case, I need a single solution to a circle/cubic problem. I know there's only one solution because the radius of the circle has been set to the smallest distance between the line and the centre point.

I tried substituting the cubic equation into the equation for the circle, then after a lot of bracket expanding (which I've checked over and over), I still don't get any intersection points.

I end up with a 6th order equation (which I believe to be correct - just thinking logically, it seems there can be 6 intercepts between a cubic and a circle). However, finding the roots of this equation (using the roots function in matlab) doesn't work :s

This is where i'm at so far:

With (x-xp)^2 + (y-yp)^2 = dc^2
And y = ax^3 + bx^2 + cx + d

After substitution, expansion and simplification:
0=(a^2)x^6 + (2ab)x^5 + (2ac + b^2)x^4 + (2ad + 2bc - 2ayp)x^3 + (2bd + c^2 - 2byp + 1)x^2 + (2cd - 2cyp -2xp)x + (d^2 + yp^2 - 2dyp + xp^2 - dc^2)

I can't see why this doesn't give me a suitable value for x intercept point. Can someone please help me out?

Thanks
This has six roots altogether, of which 0, 2, 4 or 6 may be real. But this gets you not much further than finding the roots of a general sixth order polynomial.

But there is no simple general solution for this. With numeric coefficients all the real roots can be found, but with symbolic coefficients (without some helpfull structure to them - which I don't see here but there may be) you are probably out of luck.

RonL

3. The equation and centre/radius of the circle are random, in effect, they can be anything within a domain I specify.

I know I'm looking for 1 root, but surely solving this would give me that, I don't get why it's not possible to do it algebraic-ly, when all the letters represent are real numbers?

edit: When I come to use this, there will be real numbers in there, I need a case I can program in and run in a loop for a range of circle centres and a range of cubic co-efficients. So if I have a case with real numbers in it, for example the first set in my list - a=b=c=d=1, dc=0.9589, xp=0, yp=4. Substituting these in, and finding the roots of the 6th order eqn won't work

4. Originally Posted by potticus
The equation and centre/radius of the circle are random, in effect, they can be anything within a domain I specify.

I know I'm looking for 1 root, but surely solving this would give me that, I don't get why it's not possible to do it algebraic-ly, when all the letters represent are real numbers?

edit: When I come to use this, there will be real numbers in there, I need a case I can program in and run in a loop for a range of circle centres and a range of cubic co-efficients. So if I have a case with real numbers in it, for example the first set in my list - a=b=c=d=1, dc=0.9589, xp=0, yp=4. Substituting these in, and finding the roots of the 6th order eqn won't work
Indeed because that circle and that cubic do not intersect at a real point.

RonL

5. but they do, just at one point. that dc value is the smallest distance from the point to the cubic, so a circle with that radius will touch at that specific point.

edit: perhaps that is a matlab rounding error?

6. Originally Posted by potticus
but they do, just at one point. that dc value is the smallest distance from the point to the cubic, so a circle with that radius will touch at that specific point.

edit: perhaps that is a matlab rounding error?
My conclusion that they don't intersect is based on a plot which may be a bit crude. However XL solver thinks the minimum distance between the curves is 0.027.

RonL

7. hmm, my plots show nothing that small ... in the order of 1 appears to be correct.

i'll try just the plot in excel or something, and see what i get. i'm pretty sure that distance is right though :s