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
inv
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#