# Spike Functions¶

AUTHORS:

• William Stein (2007-07): initial version
• Karl-Dieter Crisman (2009-09): adding documentation and doctests
class sage.functions.spike_function.SpikeFunction(v, eps=1e-07)

Base class for spike functions.

INPUT:

• v - list of pairs (x, height)
• eps - parameter that determines approximation to a true spike

OUTPUT:

a function with spikes at each point x in v with the given height.

EXAMPLES:

sage: spike_function([(-3,4),(-1,1),(2,3)],0.001)
A spike function with spikes at [-3.0, -1.0, 2.0]


Putting the spikes too close together may delete some:

sage: spike_function([(1,1),(1.01,4)],0.1)
Some overlapping spikes have been deleted.
You might want to use a smaller value for eps.
A spike function with spikes at [1.0]


Note this should normally be used indirectly via spike_function, but one can use it directly:

sage: from sage.functions.spike_function import SpikeFunction
sage: S = SpikeFunction([(0,1),(1,2),(pi,-5)])
sage: S
A spike function with spikes at [0.0, 1.0, 3.141592653589793]
sage: S.support
[0.0, 1.0, 3.141592653589793]

plot(xmin=None, xmax=None, **kwds)

Special fast plot method for spike functions.

EXAMPLES:

sage: S = spike_function([(-1,1),(1,40)])
sage: P = plot(S)
sage: P[0]
Line defined by 8 points

plot_fft_abs(samples=4096, xmin=None, xmax=None, **kwds)

Plot of (absolute values of) Fast Fourier Transform of the spike function with given number of samples.

EXAMPLES:

sage: S = spike_function([(-3,4),(-1,1),(2,3)]); S
A spike function with spikes at [-3.0, -1.0, 2.0]
sage: P = S.plot_fft_abs(8)
sage: p = P[0]; p.ydata
[5.0, 5.0, 3.367958691924177, 3.367958691924177, 4.123105625617661, 4.123105625617661, 4.759921664218055, 4.759921664218055]

plot_fft_arg(samples=4096, xmin=None, xmax=None, **kwds)

Plot of (absolute values of) Fast Fourier Transform of the spike function with given number of samples.

EXAMPLES:

sage: S = spike_function([(-3,4),(-1,1),(2,3)]); S
A spike function with spikes at [-3.0, -1.0, 2.0]
sage: P = S.plot_fft_arg(8)
sage: p = P[0]; p.ydata
[0.0, 0.0, -0.211524990023434..., -0.211524990023434..., 0.244978663126864..., 0.244978663126864..., -0.149106180027477..., -0.149106180027477...]

vector(samples=65536, xmin=None, xmax=None)

Creates a sampling vector of the spike function in question.

EXAMPLES:

sage: S = spike_function([(-3,4),(-1,1),(2,3)],0.001); S
A spike function with spikes at [-3.0, -1.0, 2.0]
sage: S.vector(16)
(4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)

sage.functions.spike_function.spike_function

alias of SpikeFunction

#### Previous topic

Piecewise-defined Functions

#### Next topic

Orthogonal Polynomials