[−][src]Function rusty_fitpack::splrep
pub fn splrep(
x: Vec<f64>,
y: Vec<f64>,
w: Option<Vec<f64>>,
xb: Option<f64>,
xe: Option<f64>,
k: Option<usize>,
task: Option<i8>,
s: Option<f64>,
t: Option<Vec<f64>>,
full_output: Option<bool>,
per: Option<bool>,
quiet: Option<bool>
) -> (Vec<f64>, Vec<f64>, usize)
Find the B-spline representation of a 1-D curve. Given the set of data points $(x(i), y(i))$ determine a smooth spline approximation of degree k on the interval $xb <= x <= xe$.
Example
Simple example of spline interpolation
use rusty_fitpack::splrep; let x = vec![0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]; let y = vec![0.0, 1.0, 4.0, 9.0, 16.0, 25.0, 36.0, 49.0, 64.0]; let (t, c, k) = splrep(x, y, None, None, None, None, None, None, None, None, None, None);
Parameters
x, y
: The data points defining a curve $y = f(x)$.
w
: Strictly positive Vec<f64>
of weights the same length as x
and y
.
The weights are used in computing the weighted least-squares spline
fit. If the errors in the y
values have standard-deviation given by the
vector d
, then w should be 1/d
. Default is vec![1.0; x.len()]
.
xb, xe
: The interval to fit. If None, these default to x[0]
and x[-1]
respectively.
k
: The degree of the spline fit. It is recommended to use cubic splines.
Even values of k
should be avoided especially with small s
values.
1 <= k <= 5
task
: {0, -1}
If task==0
find t
and c
for a given smoothing factor, s
.
If task=-1
find the weighted least square spline for a given set of
knots, t
. These should be interior knots as knots on the ends will be
added automatically.
s
: A smoothing condition. The amount of smoothness is determined by
satisfying the conditions: sum((w * (y - g)).powi(2),axis=0) <= s
where g(x)
is the smoothed interpolation of (x,y)
. The user can use s to control
the tradeoff between closeness and smoothness of fit. Larger s means
more smoothing while smaller values of s indicate less smoothing.
Recommended values of s depend on the weights, w. If the weights
represent the inverse of the standard-deviation of y, then a good s
value should be found in the range (m-(2*m).sqrt(),m+(2*m).sqrt())
where m is
the number of datapoints in x, y,
and w
. default : s=m-(2*m).sqrt()
if
weights are supplied. s = 0.0
(interpolating) if no weights are
supplied.
t
: The knots needed for task=-1
. If given then task is automatically set
to -1.
full_output
Should be None. Feature is not implemented yet.
per
: Should be None. Periodic spline approximations are not supported yet.
quiet
: Should be None. Feature is not implemented yet.