Mathematica 9 is now available

3.1.4 数值精度

正如 1.1.2 节讨论的那样 Mathematica 能处理任意位数的近似实数. 一般, 近似实数的精度 ( ) 是其在十进制下的,在计算中作为有效数字处理的位数. 近似实数的准确度 ( ) 是其在十进制下小数点后边的位数. 因此精度是一个数 的相对误差的度量. 而准确度是绝对误差的度量.

实数的精度和准确度

这是一个近似实数

这里给出该实数的数位的总数

这里给出小数点后边的位数

当使用 N[expr, n] 时,Mathematica 计算表达式  位精度. 只要 用户的输入有足够的精度,Mathematica 都将顺利地得到所要求精度的结果.

这里要求 Pi^25 被计算到 30 位的精度

结果确实有 30 位精度

数值计算

如果使用 N[expr],而并不指明数的精度,那么 Mathematica 将使用机器精度数.

一般,Mathematica 区分两种近似实数,任意精度数和机器精度数. 任意精度数能包含任何位数,其精度在计算中进行调整.

下面的详细讨论表明,机器精度数值直接利用用户的计算机系统的数值能力, 因此计算进行的很快. 但是机器精度数的灵活性比任意精度数差的多.

使用机器精度计算 Pi

在用来生成这个例子的计算机系统上,机器精度是 16 个十进制位

这里给出计算机系统的机器精度

机器精度数

当输入一个近似实数时,Mathematica 必须决定以机器精度还是任意精度处理它. 用户没有指明时,如果输入的数少于 $MachinePrecision 位时, Mathematica 将以机器精度处理该数,否则将以任意精度处理该数.

数的输入形式

Mathematica 打印出数的时候,通常以尽可能容易阅读的形式给出. 但如果用户想取出由 Mathematica 显示出的数,然后在后面作为输入使用, 则需要保证没有信息被丢失.

在标准输出形式下,Mathematica 显示一个数到6位

在输入形式下,Mathematica 显示出它所知道的所有位

Out[10]//InputForm=

这里是一个标准输出形式下的储意精度数

在输入形式中,Mathematica 明确指明数 的精度,并给出额外的数位以确保该数能正确地进行重构

Out[12]//InputForm=

这里使 Mathematica 不明确指出精度

Out[13]//InputForm=

控制显示数的格式

NumberMarks 选项的缺省设置在 InputForm 中和诸如 ToStringOpenWrite 的函数中由 $NumberMarks 给出. 因此通过重新设置 $NumberMarks,能整个改变 InputForm 中被显示的方式.

若缺省地使 Mathematica 在输入形式中包含数记号

甚至一个机器精度数现在也带有明显的数记号

Out[15]//InputForm=

即使不带数记号,InputForm 仍在科学表示法中使用 *^

Out[16]//InputForm=

在进行数值计算中,有时不可避免地会出现所得结果低于用户想要的精度. 特别,当得到的数值结果非常接近 0 时,用户可能很想假定结果是真正的零. 函数 Chop 允许用户用精确的整数 0 代替接近 0 的近似实数.

清除接近0的数

这个运算给出很小的虚部

使用 Chop 可以略去虚部



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.