使用不确定性准确

Mar*_*gus 4 wolfram-mathematica

假设我有2个列表,包含元素:

  1. 价值的不确定性

值存储为精确分数,我想打印出数值的组合列表.例如,如果我有1个元素列表:

ExA = {5251/977, 19087/53};
ExB = {53/19087, 977/5251};
Run Code Online (Sandbox Code Playgroud)

我希望输出为:{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];
Run Code Online (Sandbox Code Playgroud)

编辑:以下几乎按我的意愿工作:

Err[x_, \[CapitalDelta]x_] := 
 PlusMinus[
  NumberForm[N[x], {10, 2 - MantissaExponent[\[CapitalDelta]x][[2]]}],
   NumberForm[N[\[CapitalDelta]x], 2]]
SetAttributes[Err, Listable];
Run Code Online (Sandbox Code Playgroud)

如果不确定性的第二个数字舍入为0,则使用更短的版本 - 我不希望这样.例如1.7007 ± 0.006我想要的地方1.7007 ± 0.0060.

Dan*_*lau 7

更正版本:

可以对错误使用N [...,2],然后对中心值取N [...,{Infinity,Accuracy [error]}].这是第二次数值化导致每个中心值的准确性与其相应误差的准确性相匹配.

PlusMinus @@@ 
  Map[{N[#[[1]], {Infinity, Accuracy[#[[2]]]}], #[[2]]} &, 
   Transpose[{ExA, N[ExB, 2]}]]
Run Code Online (Sandbox Code Playgroud)

出[113] = {5.3746 [PlusMinus] 0.0028,360.13 [PlusMinus] 0.19}

Daniel Lichtblau