pub struct CubicSpline { /* private fields */ }
Expand description
Cubic Spline (Natural)
Description
Implement traits of Natural cubic splines, by Arne Morten Kvarving.
Type
(&Vec
Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;
fn main() {
let x = c!(0.9, 1.3, 1.9, 2.1);
let y = c!(1.3, 1.5, 1.85, 2.1);
let s = CubicSpline::from_nodes(x, y);
let new_x = c!(1, 1.5, 2.0);
// Generate Cubic polynomial
for t in new_x.iter() {
s.polynomial(*t).print();
}
// -0.2347x^3 + 0.6338x^2 - 0.0329x + 0.9873
// 0.9096x^3 - 3.8292x^2 + 5.7691x - 1.5268
// -2.2594x^3 + 14.2342x^2 - 28.5513x + 20.2094
// Evaluation
for t in new_x.iter() {
s.eval(*t).print();
}
}
Implementations
sourceimpl CubicSpline
impl CubicSpline
sourcepub fn from_nodes(node_x: Vec<f64>, node_y: Vec<f64>) -> Self
pub fn from_nodes(node_x: Vec<f64>, node_y: Vec<f64>) -> Self
Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;
fn main() {
let x = c!(0.9, 1.3, 1.9, 2.1);
let y = c!(1.3, 1.5, 1.85, 2.1);
let s = CubicSpline::from_nodes(x, y);
for i in 0 .. 4 {
println!("{}", s.eval(i as f64 / 2.0));
}
}
sourcepub fn eval<T>(&self, x: T) -> f64 where
T: Into<f64> + Copy,
pub fn eval<T>(&self, x: T) -> f64 where
T: Into<f64> + Copy,
Evaluate cubic spline with value
Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;
fn main() {
let x = c!(0.9, 1.3, 1.9, 2.1);
let y = c!(1.3, 1.5, 1.85, 2.1);
let s = CubicSpline::from_nodes(x, y);
s.eval(2.0);
}
sourcepub fn polynomial<T>(&self, x: T) -> &Polynomial where
T: Into<f64> + Copy,
pub fn polynomial<T>(&self, x: T) -> &Polynomial where
T: Into<f64> + Copy,
Returns a reference the Polynomial
at the given point x
.
Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;
fn main() {
let x = c!(0.9, 1.3, 1.9, 2.1);
let y = c!(1.3, 1.5, 1.85, 2.1);
let s = CubicSpline::from_nodes(x, y);
let p = s.polynomial(2.0);
let v = p.eval(1.9);
assert_eq!((v * 100.0).round() / 100.0, 1.85)
}
If x
is outside of the range of polynomials, the first or last polynomial will be
returned, depending if x
is lower of the first interpolation point or higher of the last
interpolation point.
sourcepub fn extend_with_nodes(&mut self, node_x: Vec<f64>, node_y: Vec<f64>)
pub fn extend_with_nodes(&mut self, node_x: Vec<f64>, node_y: Vec<f64>)
Extends the spline with the given nodes.
The method ensures that the transition between each polynomial is smooth and that the spline
interpolation of the new nodes is calculated around x = 0
in order to avoid that
successive spline extensions with large x values become inaccurate.
sourcepub fn number_of_polynomials(&self) -> usize
pub fn number_of_polynomials(&self) -> usize
Returns the number of polynimials that describe the CubicSpline
Examples
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;
fn main() {
let x = c!(0.9, 1.3, 1.9, 2.1);
let y = c!(1.3, 1.5, 1.85, 2.1);
let s = CubicSpline::from_nodes(x, y);
assert_eq!(s.number_of_polynomials(), 3);
}
Trait Implementations
sourceimpl Clone for CubicSpline
impl Clone for CubicSpline
sourcefn clone(&self) -> CubicSpline
fn clone(&self) -> CubicSpline
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for CubicSpline
impl Debug for CubicSpline
sourceimpl Default for CubicSpline
impl Default for CubicSpline
sourcefn default() -> CubicSpline
fn default() -> CubicSpline
Returns the “default value” for a type. Read more
sourceimpl From<Vec<(Range<f64>, Polynomial), Global>> for CubicSpline
impl From<Vec<(Range<f64>, Polynomial), Global>> for CubicSpline
sourceimpl Index<usize> for CubicSpline
impl Index<usize> for CubicSpline
sourceimpl Into<Vec<(Range<f64>, Polynomial), Global>> for CubicSpline
impl Into<Vec<(Range<f64>, Polynomial), Global>> for CubicSpline
sourceimpl Into<Vec<Polynomial, Global>> for CubicSpline
impl Into<Vec<Polynomial, Global>> for CubicSpline
sourcefn into(self) -> Vec<Polynomial>
fn into(self) -> Vec<Polynomial>
Performs the conversion.
impl Environment for CubicSpline
Auto Trait Implementations
impl RefUnwindSafe for CubicSpline
impl Send for CubicSpline
impl Sync for CubicSpline
impl Unpin for CubicSpline
impl UnwindSafe for CubicSpline
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more