Rbf Surface Class
Definition
Assembly: Numerics.NET (in Numerics.NET.dll) Version: 10.1.0
public sealed class RbfSurface : SurfaceRemarks
The RbfSurface class implements radial basis function interpolation for scattered data in arbitrary dimensions. RBF methods construct a smooth global interpolant as a weighted sum of radial basis functions centered at each data point.
The interpolant has the form:
For strictly positive definite (PD) kernels:
s(x) = Σᵢ wᵢ φ(||x - pᵢ||)
For conditionally positive definite (CPD) kernels:
s(x) = Σᵢ wᵢ φ(||x - pᵢ||) + p(x)
where φ is the radial basis function kernel, pᵢ are the data point locations, wᵢ are the interpolation weights, and p(x) is an augmenting polynomial.
Kernel types:
- PD kernels (Gaussian, Multiquadric, InverseMultiquadric, InverseQuadratic): Do not require polynomial augmentation and produce unconditionally solvable systems.
- CPD kernels (ThinPlate, Linear, Cubic, Quintic): Require an affine polynomial tail p(x) = c₀ + c₁x₁ + ... + cₐxₐ to ensure well-posedness and exact reproduction of linear functions.
Construction and evaluation:
- Given N sample points pᵢ ∈ ℝᴰ with values fᵢ, weights and polynomial coefficients are computed by solving a dense linear system.
- Construction cost is O(N³) due to the dense linear solve.
- Evaluation cost is O(N) per query point.
- The interpolant is defined everywhere in ℝⁿ and smoothly extrapolates beyond the data points.
RBF interpolation produces smooth, infinitely differentiable surfaces (for smooth kernels) and is particularly effective for scattered data in multiple dimensions. However, it becomes computationally expensive for large datasets due to the cubic construction cost.
The RbfSurface class inherits from Surface and provides both evaluation and gradient computation. Create instances using the ScatteredRbfInterpolator factory methods, which accept various input formats including vectors, arrays, and matrices.
RBF options such as kernel type, shape parameter, and regularization can be specified using the RbfOptions class.
Properties
Methods
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) |
| Evaluate(Double[]) |
Evaluates the surface at the specified point.
(Inherited from Surface) |
| Evaluate( |
Evaluates the surface at the specified point.
(Inherited from Surface) |
| Evaluate( |
Evaluates the surface at the specified point.
(Overrides Surface.Evaluate(ReadOnlySpan<Double>)) |
| Evaluate( |
Evaluates the surface at multiple points specified by a list of vectors.
(Inherited from Surface) |
| Evaluate( |
Evaluates the surface at multiple points specified by a read-only span of vectors.
(Inherited from Surface) |
| Evaluate( |
Evaluates the surface at multiple points stored in column-major layout.
(Inherited from Surface) |
| Get | Serves as the default hash function. (Inherited from Object) |
| Get | Gets the Type of the current instance. (Inherited from Object) |
| Gradient( |
Computes the gradient of the surface at the specified point.
(Inherited from Surface) |
| Gradient( |
Computes the gradient of a 2D surface at the specified point.
(Inherited from Surface) |
| Gradient( |
Computes the gradient of the surface at the specified point.
(Overrides Surface.Gradient(ReadOnlySpan<Double>, Span<Double>)) |
| Gradient( |
Computes the gradient of the surface at the specified point.
(Inherited from Surface) |
| Gradients( |
Computes the gradients of the surface at multiple points.
(Inherited from Surface) |
| Gradients( |
Computes the gradients of the surface at multiple points.
(Inherited from Surface) |
| Hessian |
Computes the Hessian matrix of the surface at the specified point.
(Inherited from Surface) |
| ToString | Returns a string that represents the current object. (Inherited from Object) |