Scientific Computing with Sounio
Sounio provides foundational utilities for modeling uncertainty in scientific domains.
Uncertainty in PBPK Modeling
struct KnowledgeF64 {
value: f64,
uncertainty: f64
}
fn concentration(dose_mg: KnowledgeF64, volume_l: KnowledgeF64) -> KnowledgeF64 {
let c = dose_mg.value / volume_l.value
// First-order linearized uncertainty for division:
// dc ≈ |∂c/∂dose| u_dose + |∂c/∂vol| u_vol
let d_cdose = 1.0 / volume_l.value
let d_cvol = (0.0 - dose_mg.value) / (volume_l.value * volume_l.value)
let abs_d_cdose = if d_cdose < 0.0 { 0.0 - d_cdose } else { d_cdose }
let u = abs_d_cdose * dose_mg.uncertainty
return KnowledgeF64 {
value: c,
uncertainty: u
}
}