问题描述
我在 Wolfram Mathematica 中计算有效数字时遇到问题。 让我更好地解释一下。
f[a_,b_] = a b Sin[25]
和
f[92.0,9.81] =381.421
但是,我想先将 a 和 b 之间的乘积结果近似为三位有效数字,然后乘以 Sin [25]
。总之,我想要这样的功能
f1[a_,b_] = NumberForm[a b,{3,0}] Sin[25]
但如果我评估
f1[92,9.81]
我明白
f1[92,9.81]= 903.Sin[25]
而不是381.62
。
我应该如何修改 f1[a_,b_]
以获得 f1[92,9.81]=381.62
?
解决方法
在您的特定情况下,您可以使用 Round
四舍五入为 3 位有效数字。那么结果是一个整数,所以 Sin[25]
不会转换为实数(浮点数)。但是,这可以通过 N
强制执行。
此外 Sin
假定输入弧度,除非输入被指定为度数。
注意在函数定义中使用 SetDelayed
(:=
)。
f[a_,b_] := N[Round[a b] Sin[25 Degree]]
f[92.0,9.81]
381.624
对于 a b
上的 3 个有效数字,您通常可以使用
f[a_,b_] := N[Round[a b,10^(-3 + Floor[Log10[Abs[a b]]] + 1)] Sin[25 Degree]]
例如舍入 a b
a = 1.2345;
b = 5.4321;
N[Round[a b,10^(-3 + Floor[Log10[Abs[a b]]] + 1)]]
6.71