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
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));
}
}
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);
}
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.
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.
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
Returns the “default value” for a type. Read more
Performs the conversion.
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
Mutably borrows from an owned value. Read more