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)

Bases: object

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  # abs tol 1e-8
[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  # abs tol 1e-8
[0.0, 0.0, -0.211524990023434, -0.211524990023434,
 0.244978663126864, 0.244978663126864, -0.149106180027477,
 -0.149106180027477]
vector(samples=65536, xmin=None, xmax=None)

Create 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 sage.functions.spike_function.SpikeFunction