主要内容

数字

使用的变化变量精度

描述

例子

数字(d所使用的精度vpad有效的十进制数字。默认为32位。

例子

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

例子

d1=数字(d设置新的精度d并返回旧的精度d1

例子

提高结果的精确度

默认为MATLAB®使用16位精度。对于更高的精度,使用vpa.的默认精度vpa是32位数字。使用将精度提高到32位以上数字

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

Pi32 = vpa(pi)
Pi32 = 3.1415926535897932384626433832795
currentPrecision = digits
currentPrecision = 32

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

digitsOld =数字(100);Pi100 = vpa(pi)
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);A = vpa(1/3)
A = 0.3333

现在,显示一个使用20位数字。结果表明,工具箱内部在计算时使用了4位以上的数字一个.由于舍入错误,以下结果的最后一位数字是不正确的:

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

隐藏四舍五入错误

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

A = vpa(1/10) old = digits(10);B = vpa(1/10) digits(old)
A = 0.1 b = 0.1

现在,计算差值A - b.结果不是0:

A - b
Ans = 0.000000000000000000086736173798840354720600815844403

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

B = vpa(B) a - B
B = 0.099999999999999991326382620116 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 Ans = 3.142 Ans = 3.142 Ans = 3.142 - 0.5515*eps

现在,将位数设置为40。的符号近似之间的区别π变得更引人注目。

数字(40)vpa(r) vpa(f) vpa(d) vpa(e)
Ans = 3.141592653589793238462643383279502884197 Ans = 3.141592653589793115997963468544185161591 Ans = 3.1415926535897931159979634685442 Ans = 3.141592653589793238462643383279502884197 -…0.5515320334261838440111420612813370473538 *每股收益

输入参数

全部折叠

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

输出参数

全部折叠

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

版本历史

R2006a之前介绍