ahkab.trap¶
This file implements the Trapezoidal (TRAP) Differentiation Formula (DF) and a second order prediction formula.
Module reference¶
-
get_df
(pv_array, suggested_step, predict=True)[source]¶ Get the coefficients for DF and prediction formula
Parameters:
- pv_array : sequence of sequences
Each element of
pv_array
must be of the form:(time, x, derivate(x))
In particular, the \(k\) element of pv_array contains the values of:
- \(t_{n-k}\) (the time),
- \(x_{n-k}\),
- \(dx_{n-k}/dt\)
evaluated \(k\) time steps before the current one, labeled \(n+1\).
How many samples are necessary is given by
ahkab.trap.get_required_values()
.Values that are not needed may be set to
None
, as they will be disregarded.- suggested_step : float
- The step that will be used for the current iteration, provided the error will be deemed acceptable.
- predict : bool, optional
- Whether a prediction for \(x_n\) is needed as well or not. Defaults
to
True
.
Returns:
- ret : tuple
The return value has the form:
(C1, C0, x_lte_coeff, predict_x, predict_lte_coeff)
The derivative may be written as:
\[d(x(n+1))/dt = C1 x(n+1) + C0\]x_lte_coeff is the coefficient of the Local Truncation Error, predict_x is the predicted value for \(x\) and predict_lte_coeff is the LTE coefficient for the prediction.
Raises: ValueError – if the pv_array is malformed.
-
get_required_values
()[source]¶ Get info regarding what values are needed by the DF
Returns:
- tpl : tuple of tuples
A tuple of two tuples.
- The first tuple indicates what past values of the unknown are needed for the DF.
- The second tuple indicates what past values of the unknown are needed for the prediction method.
In particular, each of the sub-tuples is built this way:
(max_order_of_x, max_order_of_dx)
Where both the values are either
int
, orNone
. Ifmax_order_of_x
is set to an integer value \(k\), the DF needs all the \(x_{n-i}\) values of x, for all \(0 \le i \le k\). In the previous text, \(x_{n-i}\) is the value the \(x\) array assumed \(i\) steps before the one we are considering for the derivative.Similar considerations apply to
max_order_of_dx
, but regard rather \(dx_n/dt\) instead of \(x_n\).If any of the values is set to
None
, it is to be assume that no value is required.
The first array has to be used if no prediction is required, the second are the values needed for prediction.