<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def subdivide(self):
 """Split the curve into a left and right half. See :meth:`.Curve.subdivide` for more information. Returns: Tuple[SubdividedCurve, SubdividedCurve]: The left and right sub-curves. """

        left_nodes, right_nodes = _curve_helpers.subdivide_nodes(self.nodes)
        midpoint = 0.5 * (self.start + self.end)
        left = SubdividedCurve(
            left_nodes, self.original_nodes, start=self.start, end=midpoint
        )
        right = SubdividedCurve(
            right_nodes, self.original_nodes, start=midpoint, end=self.end
        )
        return left, right