使用不确定性精度
假设我有 2 个列表,包含以下元素:
- 值
- 值 值的不确定性
存储为精确分数,我想打印出数值的组合列表。例如,如果我有 1 个元素列表:
ExA = {5251/977, 19087/53};
ExB = {53/19087, 977/5251};
我希望输出为:{5.3746 ± 0.0028, 360.13 ± 0.19}
,并使用 Err[ExA, ExB]
。
基本上,我希望不确定性具有 2 位数字的元素精度,并且值具有与配对不确定性相同的精度。目前我有:
Err[x_, \[CapitalDelta]x_]:=
N[x] \[PlusMinus] NumberForm[N[\[CapitalDelta]x], 2];
SetAttributes[Err, Listable];
编辑: 以下几乎可以按照我想要的方式工作:
Err[x_, \[CapitalDelta]x_] :=
PlusMinus[
NumberForm[N[x], {10, 2 - MantissaExponent[\[CapitalDelta]x][[2]]}],
NumberForm[N[\[CapitalDelta]x], 2]]
SetAttributes[Err, Listable];
如果不确定性第二位数字四舍五入为 0,则使用较短的版本 - 我不希望这样。例如 1.7007 ± 0.006
我想要 1.7007 ± 0.0060
。
Lets say I have 2 lists, containing elements:
- values
- uncertainties of the values
Values are stored as exact fractions and I want to print out combined list of numerical values. For example if i have 1 element lists:
ExA = {5251/977, 19087/53};
ExB = {53/19087, 977/5251};
I want the output to be: {5.3746 ± 0.0028, 360.13 ± 0.19}
, with using Err[ExA, ExB]
.
Basically I want uncertainty to have a element precision of 2 digits and value to have same precision as the paired uncertainty. At the moment I have:
Err[x_, \[CapitalDelta]x_]:=
N[x] \[PlusMinus] NumberForm[N[\[CapitalDelta]x], 2];
SetAttributes[Err, Listable];
Edit:
Following almost works as I want:
Err[x_, \[CapitalDelta]x_] :=
PlusMinus[
NumberForm[N[x], {10, 2 - MantissaExponent[\[CapitalDelta]x][[2]]}],
NumberForm[N[\[CapitalDelta]x], 2]]
SetAttributes[Err, Listable];
If uncertainties second digit rounds to 0, then shorter version is used - I do not want that. For example 1.7007 ± 0.006
where I want 1.7007 ± 0.0060
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更正版本:
可以对错误使用 N[...,2],然后对中心值取 N[...,{Infinity,Accuracy[error]}]。第二次数值化使每个中心值的精度与其相应误差的精度相匹配。
Out[113]= {5.3746 [PlusMinus] 0.0028, 360.13 [PlusMinus] 0.19}
Daniel Lichtblau
Corrected version:
Can use N[...,2] on the errors, then take N[...,{Infinity,Accuracy[error]}] on the central values. THis second numericization causes the accuracy of each central value to match the accuracy of its corresponding error.
Out[113]= {5.3746 [PlusMinus] 0.0028, 360.13 [PlusMinus] 0.19}
Daniel Lichtblau
改进版本,灵感来自于大牛的回答:
测试
Improved version, inspired by Daniel's answer:
Testing