Intersecting plane curves
For Maple17, a new command, intersectcurves, has been added to the algcurves package.
Given two plane curves expressed as polynomials in two variables,
The intersectcurves command computes the points of intersection along with their multiplicities. Each set of intersection points is expressed as a list containing three values. The first two are irreducible polynomials, the second of which is in only one of the variables. The third value is either 0 or 1. When the third value is 1, the point is affine; when the third value is 0, it is a point in the projective plane (at infinity).
This is to be interpreted as follows. There are two intersection points of multiplicity 2, namely, (1,0) and (-1,0), indicating that they are points where the curves intersect tangentially. In addition, there are two intersection points of multiplicity 1, namely, 2,3 and 2,−3. We can see all intersection points graphically with a simple implicit plot.
The following example illustrates the case when there are intersection points at infinity.
There is one affine intersection point (0,-1) of multiplicity 1, plus one intersection point at infinity, of multiplicity 5. The tangent at this point is the line x=0. Each of the two blue vertical lines intersects each of the two asymptotes of the red curve at the infinite point 0,1,0. All but one of these intersections have multiplicity 1, and the exceptional one, between the blue line and the asymptote to the red curve at x=1, comes from a tangential intersection, of multiplicity 2.
We can perform a change of coordinates in order to plot this in the affine plane. First, we homogenize the equations, introducing a third variable z, and then we substitute y=1 in order to move the intersection point that was previously at infinity to the origin.
h1 ≔ evalx2⋅y−y⋅z2−z3, y=1 ;h2 ≔ evalx2−x⋅z, y=1
After the coordinate transformation, all intersection points (of h1 and h2) are visible in the plot and there are no intersection points at infinity.
Download Help Document
What kind of issue would you like to report? (Optional)