0.1.0 |
|
---|
#33 in #相对
每月 28 次下载
22KB
429 代码行
uncertainty-rs
Unc,或不确定,是一种表示真值未知数值的方法。不确定度可以用绝对不确定度(ab())或相对不确定度(rel())来表示。
它们可以看起来像这样
绝对:14.6 ± 0.2 毫米
相对:14.7 ± 0.01369%
检查后应该很明显,这两个测量值是相等的,尽管它们的值略有不同。这是因为当考虑不确定度值时,这两个测量值之间有一些重叠。这可以通过以下方式确定
use uncertainty_rs::*;
let one = Unc::ab(14.6, 0.2);
let two = Unc::rel(14.7, 0.01369);
assert!(one.overlap(&two));
还支持更多的算术运算;绝对不确定度可以相加和相减,相对不确定度可以相乘和相除。相对不确定度还可以被提升到 幂。要在这两种类型之间进行转换,可以使用 Uncertainty 特性。
use uncertainty_rs::*;
use approx::assert_abs_diff_eq;
let one = Unc::ab(14.6, 0.2);
let two = Unc::rel(14.7, 0.01369);
let three = Unc::rel(2.0, 0.05);
let eq: AbUnc = one + two.as_ab();
let eq: RelUnc = eq.as_rel() * three;
assert_abs_diff_eq!(eq.val(), 58.6, epsilon = 0.0000001);
assert_abs_diff_eq!(eq.unc(), 0.0636943, epsilon = 0.0000001);
类型之间的转换也可以通过 From 特性来完成
let x: AbUnc = Unc::rel(2.0, 0.1).into();
assert_abs_diff_eq!(x.unc(), 0.2);
let y = AbUnc::from(2.0);
assert_abs_diff_eq!(y.val(), 2.0);
assert_abs_diff_eq!(y.unc(), 0.0);
使用 From 特性创建 Uncertainty 值将导致其值中包含零不确定度。这是系统内处理标量值算术运算时应采用的方式。
可以使用 Uncertainty 特性编写一个函数,该函数接受绝对或相对不确定度
fn print<T: Uncertainty>(x: T) {
let x = x.as_ab();
println!("The value is: {}, and the uncertainty is: {}!", x.val(), x.unc());
}
print(AbUnc::from(10.0));
print(RelUnc::from(20.0));
然而,如果您只想接受特定的相对或绝对不确定值,可以通过使用 AbUnc 和 RelUnc 类型来完成此操作
fn print_ab(x: AbUnc) {
println!("The value of this absolute uncertainty is: {}", x.val());
}
print_ab(Unc::ab(14.7, 0.02));
依赖项
~175KB