PPSplineDual2#
- class rateslib.splines.PPSplineDual2(k, t, c=None)#
Bases:
objectPiecewise polynomial spline composed of float-64 values on the x-axis and
Dual2values on the y-axis.- Parameters:
k (int) – The order of the spline.
t (sequence of float) – The knot sequence of the spline.
c (sequence of Dual2, optional) – The coefficients of the spline.
seealso:: (..) –
PPSplineF64: Spline where the y-axis contains float-64 data types.PPSplineDual: Spline where the y-axis containsDualdata types.
Attributes Summary
The spline coefficients of length
n.The order of the pp spline.
The dimension of the pp spline.
The knot sequence of the pp spline, of length
n+k.Methods Summary
bspldnev(x, i, m)Evaluate m order derivative on the i th b-spline at x coordinates.
bsplev(x, i)Evaluate value of the i th b-spline at x coordinates.
bsplmatrix(tau, left_n, right_n)Evaluate the 2d spline collocation matrix at each data site.
csolve(tau, y, left_n, right_n, allow_lsq)Solve the spline coefficients given the data sites.
ppdnev(x, m)Evaluate an array of x coordinates derivatives on the pp spline.
ppdnev_single(x, m)Evaluate a single x coordinate derivative from the right on the pp spline.
ppdnev_single_dual(x, m)Evaluate a single x coordinate derivative from the right on the pp spline.
ppdnev_single_dual2(x, m)Evaluate a single x coordinate derivative from the right on the pp spline.
ppev(x)Evaluate an array of x coordinates derivatives on the pp spline.
ppev_single(x)Evaluate a single x coordinate value on the pp spline.
Evaluate a single x coordinate value on the pp spline.
Evaluate a single x coordinate value on the pp spline.
to_json()Return a JSON representation of the object.
Attributes Documentation
- c#
The spline coefficients of length
n.
- k#
The order of the pp spline.
- n#
The dimension of the pp spline.
- t#
The knot sequence of the pp spline, of length
n+k.
Methods Documentation
- bspldnev(x, i, m)#
Evaluate m order derivative on the i th b-spline at x coordinates.
Repeatedly applies
bspldnev_single().Warning
The x coordinates supplied to this function are treated as float, or are converted to float. Therefore it does not guarantee the preservation of AD sensitivities.
- Parameters:
x (1-d array of float) – x-axis coordinates.
i (int) – The index of the B-spline to evaluate.
m (int) – The order of derivative to calculate value for.
- Return type:
1-d array
- bsplev(x, i)#
Evaluate value of the i th b-spline at x coordinates.
Repeatedly applies
bsplev_single().Warning
The x coordinates supplied to this function are treated as float, or are converted to float. Therefore it does not guarantee the preservation of AD sensitivities.
- Parameters:
x (1-d array of float) – x-axis coordinates
i (int) – Index of the B-spline to evaluate.
- Return type:
1-d array of float
- bsplmatrix(tau, left_n, right_n)#
Evaluate the 2d spline collocation matrix at each data site.
- Parameters:
tau (1-d array of float) – The data sites x-axis values which will instruct the pp spline.
left_n (int) – The order of derivative to use for the left most data site and top row of the spline collocation matrix.
right_n (int) – The order of derivative to use for the right most data site and bottom row of the spline collocation matrix.
- Return type:
2-d array of float
Notes
The spline collocation matrix is defined as,
\[[\mathbf{B}_{k, \mathbf{t}}(\mathbf{\tau})]_{j,i} = B_{i,k,\mathbf{t}}(\tau_j)\]where each row is a call to
bsplev(), except the top and bottom rows which can be specifically adjusted to account forleft_nandright_nsuch that, for example, the first row might be,\[[\mathbf{B}_{k, \mathbf{t}}(\mathbf{\tau})]_{1,i} = \frac{d^n}{dx}B_{i,k,\mathbf{t}}(\tau_1)\]
- csolve(tau, y, left_n, right_n, allow_lsq)#
Solve the spline coefficients given the data sites.
- Parameters:
tau (list[f64]) – The data site x-coordinates.
y (list[type]) – The data site y-coordinates in appropriate type (float, Dual or Dual2) for self.
left_n (int) – The number of derivatives to evaluate at the left side of the data sites, i.e. defining an endpoint constraint.
right_n (int) – The number of derivatives to evaluate at the right side of the datasites, i.e. defining an endpoint constraint.
allow_lsq (bool) – Whether to permit least squares solving using non-square matrices.
- Return type:
None
- ppdnev(x, m)#
Evaluate an array of x coordinates derivatives on the pp spline.
Repeatedly applies
ppdnev_single().Warning
The x coordinates supplied to this function are treated as float, or are converted to float. Therefore it does not guarantee the preservation of AD sensitivities.
- Parameters:
x (1-d array of float) – x-axis coordinates.
m (int) – The order of derivative to calculate value for.
- Return type:
1-d array of float
- ppdnev_single(x, m)#
Evaluate a single x coordinate derivative from the right on the pp spline.
- Parameters:
x (float) – The x-axis value at which to evaluate value.
m (int) – The order of derivative to calculate value for (0 is function value).
- Return type:
Notes
The value of derivatives of the spline at x is the sum of the value of each b-spline derivatives evaluated at x multiplied by the spline coefficients, c.
Due to the definition of the splines this derivative will return the value from the right at points where derivatives are discontinuous.
\[\frac{d^m\$(x)}{d x^m} = \sum_{i=1}^n c_i \frac{d^m B_{(i,k,\mathbf{t})}(x)}{d x^m}\]
- ppdnev_single_dual(x, m)#
Evaluate a single x coordinate derivative from the right on the pp spline.
- Parameters:
x (Dual) – The x-axis value at which to evaluate value.
m (int) – The order of derivative to calculate value for (0 is function value).
- Return type:
Notes
This function guarantees preservation of accurate AD
Dualsensitivities. It also prohibits type mixing and will raise if any Dual2 data types are encountered.
- ppdnev_single_dual2(x, m)#
Evaluate a single x coordinate derivative from the right on the pp spline.
- Parameters:
x (Dual2) – The x-axis value at which to evaluate value.
m (int) – The order of derivative to calculate value for (0 is function value).
- Return type:
Notes
This function guarantees preservation of accurate AD
Dual2sensitivities. It also prohibits type mixing and will raise if any Dual data types are encountered.
- ppev(x)#
Evaluate an array of x coordinates derivatives on the pp spline.
Repeatedly applies
ppev_single(), and is typically used for minor performance gains in chart plotting.Warning
The x coordinates supplied to this function are treated as float, or are converted to float. Therefore it does not guarantee the preservation of AD sensitivities. If you need to index by x values which are
DualorDual2, then you should choose to iteratively map the provided methodsppev_single_dual()orppev_single_dual2()respectively.- Return type:
1-d array of float
- ppev_single(x)#
Evaluate a single x coordinate value on the pp spline.
- Parameters:
x (float) – The x-axis value at which to evaluate value.
- Return type:
float, Dual or Dual2 based on self
Notes
The value of the spline at x is the sum of the value of each b-spline evaluated at x multiplied by the spline coefficients, c.
\[\$(x) = \sum_{i=1}^n c_i B_{(i,k,\mathbf{t})}(x)\]
- ppev_single_dual(x)#
Evaluate a single x coordinate value on the pp spline.
Notes
This function guarantees preservation of accurate AD
Dualsensitivities. It also prohibits type mixing and will raise if Dual2 data types are encountered.
- ppev_single_dual2(x)#
Evaluate a single x coordinate value on the pp spline.
Notes
This function guarantees preservation of accurate AD
Dual2sensitivities. It also prohibits type mixing and will raise if Dual data types are encountered.
- to_json()#
Return a JSON representation of the object.
- Return type:
str