Wolfram Mathematica 中近似数字的计算

问题描述

我在 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...