# Complex Interpolation¶

AUTHORS:

• Ethan Van Andel (2009): initial version

Development supported by NSF award No. 0702939.

class sage.calculus.interpolators.CCSpline

Bases: object

A CCSpline object contains a cubic interpolation of a figure in the complex plane.

EXAMPLES:

A simple square:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: cs = complex_cubic_spline(pts)
sage: cs.value(0)
(-1-1j)
sage: cs.derivative(0)
(0.9549296...-0.9549296...j)

derivative(t)

Return the derivative (speed and direction of the curve) of a given point from the parameter t.

INPUT:

• t – double, the parameter value for the parameterized curve, between 0 and 2*pi.

OUTPUT:

A complex number representing the derivative at the point on the figure corresponding to the input t.

EXAMPLES:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: cs = complex_cubic_spline(pts)
sage: cs.derivative(3 / 5)
(1.40578892327...-0.225417136326...j)
sage: cs.derivative(0) - cs.derivative(2 * pi)
0j
sage: cs.derivative(-6)
(2.52047692949...-1.89392588310...j)

value(t)

Return the location of a given point from the parameter t.

INPUT:

• t – double, the parameter value for the parameterized curve, between 0 and 2*pi.

OUTPUT:

A complex number representing the point on the figure corresponding to the input t.

EXAMPLES:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: cs = complex_cubic_spline(pts)
sage: cs.value(4 / 7)
(-0.303961332787...-1.34716728183...j)
sage: cs.value(0) - cs.value(2*pi)
0j
sage: cs.value(-2.73452)
(0.934561222231...+0.881366116402...j)

class sage.calculus.interpolators.PSpline

Bases: object

A CCSpline object contains a polygon interpolation of a figure in the complex plane.

EXAMPLES:

A simple square:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: ps = polygon_spline(pts)
sage: ps.value(0)
(-1-1j)
sage: ps.derivative(0)
(1.27323954...+0j)

derivative(t)

Return the derivative (speed and direction of the curve) of a given point from the parameter t.

INPUT:

• t – double, the parameter value for the parameterized curve, between 0 and 2*pi.

OUTPUT:

A complex number representing the derivative at the point on the polygon corresponding to the input t.

EXAMPLES:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: ps = polygon_spline(pts)
sage: ps.derivative(1 / 3)
(1.27323954473...+0j)
sage: ps.derivative(0) - ps.derivative(2*pi)
0j
sage: ps.derivative(10)
(-1.27323954473...+0j)

value(t)

Return the derivative (speed and direction of the curve) of a given point from the parameter t.

INPUT:

• t – double, the parameter value for the parameterized curve, between 0 and 2*pi.

OUTPUT:

A complex number representing the point on the polygon corresponding to the input t.

EXAMPLES:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: ps = polygon_spline(pts)
sage: ps.value(.5)
(-0.363380227632...-1j)
sage: ps.value(0) - ps.value(2*pi)
0j
sage: ps.value(10)
(0.26760455264...+1j)

sage.calculus.interpolators.complex_cubic_spline(pts)

Creates a cubic spline interpolated figure from a set of complex or $$(x,y)$$ points. The figure will be a parametric curve from 0 to 2*pi. The returned values will be complex, not $$(x,y)$$.

INPUT:

• pts A list or array of complex numbers, or tuples of the form $$(x,y)$$.

EXAMPLES:

A simple square:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: cs = complex_cubic_spline(pts)
sage: fx = lambda x: cs.value(x).real
sage: fy = lambda x: cs.value(x).imag
sage: show(parametric_plot((fx, fy), (0, 2*pi)))
sage: m = Riemann_Map([lambda x: cs.value(real(x))], [lambda x: cs.derivative(real(x))], 0)
sage: show(m.plot_colored() + m.plot_spiderweb())


Polygon approximation of a circle:

sage: pts = [e^(I*t / 25) for t in range(25)]
sage: cs = complex_cubic_spline(pts)
sage: cs.derivative(2)
(-0.0497765406583...+0.151095006434...j)

sage.calculus.interpolators.polygon_spline(pts)

Creates a polygon from a set of complex or $$(x,y)$$ points. The polygon will be a parametric curve from 0 to 2*pi. The returned values will be complex, not $$(x,y)$$.

INPUT:

• pts – A list or array of complex numbers of tuples of the form $$(x,y)$$.

EXAMPLES:

A simple square:

sage: pts = [(-1, -1), (1, -1), (1, 1), (-1, 1)]
sage: ps = polygon_spline(pts)
sage: fx = lambda x: ps.value(x).real
sage: fy = lambda x: ps.value(x).imag
sage: show(parametric_plot((fx, fy), (0, 2*pi)))
sage: m = Riemann_Map([lambda x: ps.value(real(x))], [lambda x: ps.derivative(real(x))],0)
sage: show(m.plot_colored() + m.plot_spiderweb())


Polygon approximation of an circle:

sage: pts = [e^(I*t / 25) for t in range(25)]
sage: ps = polygon_spline(pts)
sage: ps.derivative(2)
(-0.0470303661...+0.1520363883...j)
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 1, "mathjax_asciimath": 1, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.43863946199417114, "perplexity": 4657.000738952478}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2021-43/segments/1634323585997.77/warc/CC-MAIN-20211024111905-20211024141905-00703.warc.gz"}