Affine plane curves
AffinePlaneCurve — TypeAffinePlaneCurve{BaseField<:Field, RingType<:Ring} <: AbsAffineCurve{BaseField, RingType}Type for reduced affine plane curves.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> F = y^3*x^6 - y^6*x^2;
julia> C = plane_curve(F)
Affine plane curve
defined by 0 = x^5*y - x*y^4
defining_equation — Methoddefining_equation(C::AffinePlaneCurve)Return the defining equation of C.
defining_equation(C::ProjectivePlaneCurve)Return the defining equation of the (reduced) plane curve C.
common_components — Methodcommon_components(C::AffinePlaneCurve, D::AffinePlaneCurve)Return the affine plane curve consisting of the common components of C and D, or an empty vector if they do not have a common component. This component can be reducible.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> C = plane_curve(x*(x+y)*(x^2 + x + 1));
julia> D = plane_curve(x*(x+y)*(x-y));
julia> common_components(C, D)
1-element Vector{AffinePlaneCurve{QQField, MPolyQuoRing{QQMPolyRingElem}}}:
scheme(x^2 + x*y)
multiplicity — Methodmultiplicity(C::AffinePlaneCurve, P::AbsAffineRationalPoint)Return the multiplicity of C at P.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> C = plane_curve(x^2*(x+y)*(y^3-x^2));
julia> P = C([2,-2])
Rational point
of scheme(-x^4 - x^3*y + x^2*y^3 + x*y^4)
with coordinates (2, -2)
julia> multiplicity(C, P)
1
tangent_lines — Methodtangent_lines(C::AffinePlaneCurve, P::AbsAffineRationalPoint)Return the tangent lines at P to C with their multiplicity.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> C = plane_curve(x^2*(x+y)*(y^3-x^2));
julia> P = C([0, 0])
Rational point
of scheme(-x^4 - x^3*y + x^2*y^3 + x*y^4)
with coordinates (0, 0)
julia> tangent_lines(C, P)
Dict{AffinePlaneCurve{QQField, MPolyQuoRing{QQMPolyRingElem}}, Int64} with 2 entries:
scheme(x) => 3
scheme(x + y) => 1
intersection_multiplicity — Methodintersection_multiplicity(C::AffinePlaneCurve, D::AffinePlaneCurve, P::AbsAffineRationalPoint)Return the intersection multiplicity of C and D at P.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y]);
julia> C = plane_curve((x^2+y^2)*(x^2 + y^2 + 2*y))
Affine plane curve
defined by 0 = x^4 + 2*x^2*y^2 + 2*x^2*y + y^4 + 2*y^3
julia> D = plane_curve((x^2+y^2)*(y^3*x^6 - y^6*x^2))
Affine plane curve
defined by 0 = x^7*y + x^5*y^3 - x^3*y^4 - x*y^6
julia> Q = D([0, -2]);
julia> intersection_multiplicity(C, D, Q)
1
is_transverse_intersection — Methodis_transverse_intersection(C::AffinePlaneCurve, D::AffinePlaneCurve, P::AbsAffineRationalPoint)Return true if C and D intersect transversally at P and false otherwise.
Examples
julia> R, (x, y) = polynomial_ring(QQ, [:x, :y])
(Multivariate polynomial ring in 2 variables over QQ, QQMPolyRingElem[x, y])
julia> C = plane_curve(x*(x+y))
Affine plane curve
defined by 0 = x^2 + x*y
julia> D = plane_curve((x-y)*(x-2))
Affine plane curve
defined by 0 = x^2 - x*y - 2*x + 2*y
julia> P = C([QQ(0), QQ(0)])
Rational point
of scheme(x^2 + x*y)
with coordinates (0, 0)
julia> Q = C([QQ(2), QQ(-2)])
Rational point
of scheme(x^2 + x*y)
with coordinates (2, -2)
julia> is_transverse_intersection(C, D, P)
false
julia> is_transverse_intersection(C, D, Q)
true
projective_closure — Methodprojective_closure(C::AffinePlaneCurve) -> ProjectivePlaneCurveReturn the projective closure of C.