SQuad¶
-
class
xitorch.integrate.SQuad(x: torch.Tensor, method: Optional[Union[str, Callable]] = None, **fwd_options)[source]¶ SQuad (Sampled QUADrature) is a class for quadrature performed with a fixed samples at given points. Mathematically, it does the integration
\[\mathbf{z}(x) = \int_{x_0}^x \mathbf{y}(x')\ \mathrm{d}x\]where \(\mathbf{y}(x)\) is the interpolated function from a given sample.
- Parameters
x (torch.Tensor) – The positions where the samples are given. It is a 1D tensor with shape
(nx,).method (str or callable or None) – The integration method. If None, it will choose
"cspline".**fwd_options – Method-specific options (see method section below)
-
method="cspline" SQuad(..., method="cspline", *, bc_type="natural")
Perform integration of given sampled values by assuming it is interpolated with cubic spline 1. It is simply
\[S = \sum_{i=0}^{N-2} \left[\frac{1}{2}(y_i+y_{i+1}) + \frac{1}{12}(y'_i - y'_{i+1})(x_{i+1}-x_i)^2\right]\]- Keyword Arguments
bc_type (str) – Boundary condition. See
xitorch.interpolate.Interp1Dwith"cspline"method for details.
References
- 1
Mark H. Holmes, “Connections Between Cubic Splines and Quadrature Rules” (eq. 8), The American Mathematical Monthly, Volume 121, Issue 8, 2014.
-
method="trapz" SQuad(..., method="trapz")
Perform integration with trapezoidal rule. It is simply
\[S = \sum_{i=0}^{N-2} \frac{1}{2}(y_i+y_{i+1})\]
-
cumsum(y: torch.Tensor, dim: int = - 1) → torch.Tensor[source]¶ Perform the cumulative integration of the samples \(\mathbf{y}\) over the specified dimension.
- Parameters
y (torch.Tensor) – The value of samples. The size of
yatdimmust be equal to the length ofx.dim (int) – The dimension where the cumulative integration is performed.
- Returns
The cumulative integrated values with the same shape as
y.- Return type
torch.Tensor
-
integrate(y: torch.Tensor, dim: int = - 1, keepdim: bool = False) → torch.Tensor[source]¶ Perform the full integration of the samples \(\mathbf{y}\) over the specified dimension.
- Parameters
y (torch.Tensor) – The value of samples. The size of
yatdimmust be equal to the length ofx, i.e.(..., nx, ...).dim (int) – The dimension where the integration is performed.
keepdim (bool) – Option to not discard the integrated dimension. If
True, the integrated dimension size will be 1.
- Returns
The integrated values.
- Return type
torch.Tensor