fn get_peak(ka: f64, ke: f64) -> f64 {
(ka / ke).ln() / (ka - ke)
}
fn der_peak(ka: f64, ke: f64) -> f64 {
((ka * (ka / ke).ln()) + ke - ka) / (ka * (ka - ke) * (ka - ke))
}
pub fn get_ka(ke: f64, dela: f64) -> f64 {
let mut ka = 1f64;
let mut loss = 1f64;
while loss.abs() > 0.01 {
loss = dela - get_peak(ka, ke);
ka -= loss / der_peak(ka, ke);
}
ka
}
pub fn get_sample(p: f64, ke: f64, ka: f64, t: f64) -> f64 {
p * ((-1f64 * ke * t).exp() - (-1f64 * ka * t).exp())
}
pub fn linspace(stop: usize, count: usize) -> Vec<f64> {
let dx = stop as f64 / (count - 1) as f64;
(0..count).map(|i| (i as f64) * dx).collect()
}