数字

使用可变精度

描述

例子

数字(d)设置使用的精度vpad重要的小数位数。默认值是32位。

例子

d1=数字所使用的当前精度vpa

例子

d1=数字(d)设置新的精度d并返回原来的精度d1

例子

提高结果的精度

默认情况下,MATLAB®使用16位精度。如果需要更高的精度,请使用vpa。的默认精度vpa是32位。增加精度超过32位数字使用数字

找到π使用vpa,它使用默认的32位精度。通过使用,确认当前精度为32数字

pi32 = vpa(π)
pi32 = 3.1415926535897932384626433832795
currentPrecision =数字
currentPrecision = 32

保存当前值数字digitsOld并将新的精度设置为One hundred.位数。找到π使用vpa。结果是100位。

digitsOld =数字(100);pi100 = vpa(π)
pi100 = 3.1415926535897932384626433832795028841971693993751058209……74944592307816406286208998628034825342117068

请注意

vpa输出是象征性的。若要使用不接受符号值的MATLAB函数进行符号输出,请使用以下方法将符号值转换为双精度

最后,恢复旧价值数字进行进一步的计算。

数字(digitsOld)

有关更多信息,请参见提高数值计算的精度

通过降低精度来提高速度

通过使用MATLAB提高计算速度vpa精确度较低。设置较低的精度使用数字

首先,找出在大输入上执行操作所花费的时间。

输入= 1:0.01:500;抽搐泽塔(输入);toc
运行时间为48.968983秒。

现在,重复操作,以一个较低的精度使用vpa。将精度降低到10数字用数字。然后,用vpa降低…的精确度输入并执行相同的操作。花费的时间显著减少。

digitsOld =数字(10);vpaInput = vpa(输入);抽搐泽塔(vpaInput);toc
运行时间为31.450342秒。

请注意

vpa输出是象征性的。若要使用不接受符号值的MATLAB函数进行符号输出,请使用以下方法将符号值转换为双精度

最后,恢复旧价值数字进行进一步的计算。

数字(digitsOld)

有关更多信息,请参见通过降低精度来提高速度

保护数字

属性指定的位数vpa函数或数字函数是保证的位数。在内部,工具箱可以使用比您指定的多几个数字。这些额外的数字被称为保护数字。例如,设置数字数为4,然后用4个数字显示1/3的浮点近似值:

老=数字(4);一个= vpa (1/3)
一个= 0.3333

现在,显示一个使用20位数。结果表明,该工具箱在计算时内部使用的数字超过4位一个。由于四舍五入误差,以下结果的最后几位不正确:

数字(20)vpa (a)数字(旧)
ans = 0.33333333333303016843

隐藏的舍入误差

隐藏的舍入错误会导致意想不到的结果。例如,以默认的32位精度和10位精度计算数字1/10:

a = vpa(1/10) old =数字(10)b = vpa(1/10)位数(old)
a = 0.1 b = 0.1

现在,计算它们的差值a - b。结果不为0:

a - b
ans = 0.000000000000000000086736173798840354720600815844403

的区别a - b不等于零,因为工具箱内部增加了10位数字b = 0.132-digit精度。这个过程意味着舍入错误。工具箱实际上计算了差异a - b如下:

b = vpa(b) a - b
ans = 0.000000000000000000086736173798840354720600815844403

用于将浮点数转换为符号对象的技术

假设您将一个双数字转换为一个符号对象,然后对该对象执行VPA操作。结果可能取决于将浮点数转换为符号对象所使用的转换技术。的信谊函数允许您通过指定第二个可选参数来选择转换技术,该参数可以是“r”,“f”,' d ',或“e”。默认值是“r”。例如,转换常数π= 3.141592653589793……对一个象征性的对象:

r =符号(pi) f =符号(π,f) d =符号(π,' d ') e =符号(π,“e”)
r = pi f = 884279719003555/281474976710656 d = 3.1415926535897931159979634685442 e = pi - (198*eps)/359

虽然工具箱在屏幕上显示的这些数字不同,但它们是合理的近似π。使用vpa转换这些合理的近似π回到浮点值。

将位数设置为4。四种近似中有三种给出了相同的结果。

数字(4)vpa(r) vpa(f) vpa(d) vpa(e)
ans = 3.142 - 0.5515*eps

现在,将位数设置为40。的符号近似之间的区别π变得更加明显。

数字(40)vpa(r) vpa(f) vpa(d) vpa(e)
ans = 3.141592653589793238463279502884197 ans = 3.1415926535897931159979634685442 ans = 3.14159265358979323846264338279502884197…0.5515320334261838440111420612813370473538 *每股收益

输入参数

全部折叠

新的精度设置,指定为数字或符号数字。该设置指定用于可变精度计算的有效小数位数。如果该值d不是整数,数字四舍五入到最接近的整数。

输出参数

全部折叠

当前精度设置,以双精度数返回。该设置指定当前用于可变精度计算的有效十进制数字的数目。

之前介绍过的R2006a