【问题标题】:Force Mathematica to do numerical computations with finite precision强制 Mathematica 以有限精度进行数值计算
【发布时间】:2014-01-04 15:53:01
【问题描述】:

我想分析 Mathematica 中解析表达式的数值稳定性。为此,我想强制 Mathematica 以有限精度对表达式进行数值计算,并以更高的精度与结果进行比较。问题是我并没有真正让它忘记它在后台保留的额外数字,即使我明确告诉它这样做。下面的bug在哪里?

In[466]:= Sin[2.0]
Out[466]= 0.9092974268256817

In[467]:= Block[{$MaxExtraPrecision = 0}, N[Sin[2.0], 2]]
Out[467]= 0.9092974268256817

In[468]:= Block[{$MaxExtraPrecision = 0}, N[Sin[2.0`2], 2]]
Out[468]= 0.91

In[469]:= SetPrecision[%, 16]
Out[469]= 0.9092974268256817

即使在第三个版本中,它也会在后台保留更多数字。

【问题讨论】:

    标签: precision numeric


    【解决方案1】:

    也许 NumberForm 是您需要的。

    NumberForm[expr, n] 在 expr 中输出近似实数 给出 n 位精度。

    http://reference.wolfram.com/mathematica/ref/NumberForm.html

    【讨论】:

    • 据我了解,这只会减少用于输出的位数,而不是数值计算本身。从您链接的帮助页面中:“NumberForm 充当“包装器”,影响打印,但不影响评估。”
    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多