VPA.

可变精度算术(任意精度算术)

金宝app支持未删除未定义数字的字符向量。相反,首先使用符号编号和变量使用轶事Syms.,然后使用对它们的操作。例如,使用VPA((1 + SQRT(SYM(5)))/ 2)代替VPA(1 + SQRT(5))/ 2')

描述

VPA(X使用可变精度浮点算术(VPA)来评估符号输入的每个元素X至少D.有效的数字,在哪里D.是值的价值数字功能。默认值数字是32。

VPA(XD.至少使用D.有效的数字,而不是值数字

例子

使用可变精度算术评估符号输入

使用可变精度浮点算术评估符号输入。默认,VPA.计算要素到32个有效数字。

syms x p = sym(pi);Pivpa = VPA(P)
Pivpa = 3.1415926535897932384626433832795
a = sym(1/3);f = a * sin(2 * p * x);FVPA = VPA(F)
FVPA = 0.3333333333333333333333333333333333 * sin(6.283185307179586476925286766559 * x)

评估具有可变精度算术的向量或矩阵的元素。

v = [x / p a ^ 3];m = [sin(p)cos(p / 5);exp(p * x)x / log(p)];VPA(v)VPA(M)
ANS = [0.31830988618379067153776752674503 * X,0.037037037037037037037037037037037] ANS = [0,0.80901699437494742410229341718282] [EXP(3.1415926535897932384626433832795 * X),0.87356852683023186835397746476334 * X]

注意

您必须将所有内部输入包装在一起VPA., 如EXP(VPA(200))。否则,输入将自动转换为Matlab双倍®

使用更改精度VPA.

默认,VPA.评估输入到32个有效数字。您可以通过使用使用的更改有效数字的数量数字功能。

近似表达100001/10001.使用七位有效数字数字。挽救了旧的价值数字返回数字(7)。该VPA.函数只返回五位有效数字,这可能意味着剩下的数字是零。

digitsold =数字(7);Y = SYM(100001)/ 10001;VPA(Y)
ans = 9.9991.

检查剩余数字是否使用更高的精度值来zeros25.。结果表明,剩余数字实际上是重复十进制。

数字(25)VPA(Y)
ans = 9.999100089991000899910009.

或者,覆盖数字一个单身VPA.调用,通过指定第二个参数来更改精度。

通过指定第二个参数,找到π到100个有效数字。

VPA(PI,100)
ANS = 3.141592653589793238462643383279502884197169 ... 39937510582097494459230781640628620899862803 ... 4825342117068

恢复原始精度值Digitsold.进一步计算。

数字(Digitsold)

数值近似象征结果

虽然符号结果精确,但它们可能不是方便的形式。您可以使用VPA.以数字方式近似精确的象征结果。

用来解决其根的高度多项式解决。该解决功能不能象征性地解决高度多项式,并且代表了根源

syms x y =解决(x ^ 4  -  x + 1,x)
y = root(z ^ 4  -  z + 1,z,1)根(z ^ 4  -  z + 1,z,2)根(z ^ 4  -  z + 1,z,3)根(z ^ 4  -Z + 1,Z,4)

使用VPA.以数字方式近似根。

YVPA = VPA(Y)
yVpa = 0.72713608449119683997667565867496  -  0.43001428832971577641651985839602i 0.72713608449119683997667565867496 + 0.43001428832971577641651985839602i  -  0.72713608449119683997667565867496  -  0.93409928946052943963903028710582i  -  0.72713608449119683997667565867496 + 0.93409928946052943963903028710582i

VPA.使用保护数字来保持精度

价值数字函数指定所使用的最小数字数。在内部,VPA.可以使用更多的数字而不是数字指定。这些附加数字称为保护数字,因为它们会在后续计算中防止循环错误。

数值近似1/3使用四个有效数字。

A = VPA(1/3,4)
a = 0.3333.

近似结果一种使用20位数。结果表明,在计算时,工具箱内部使用了超过四位数字一种。由于舍入错误,结果的最后一个数字不正确。

VPA(A,20)
ANS = 0.3333333333303016843

避免隐藏的圆形错误

隐藏的圆形错误可能会导致意外结果。

评估1/10使用默认的32位精度,然后使用10位精度。

A = VPA(1/10,32)B = VPA(1/10,10)
a = 0.1 b = 0.1

表面上,一种B.看起来平等。通过寻找检查他们的平等A - B.

A  -  B.
ans = 0.0000000000000000 00039803547206/033617370603547206/0336173706035473060336173706035472060336173706033617370603547206033617720603354720603361737060081584720600815844403.

差异不等于零,因为B.仅计算10.精度的数字并包含较大的圆形误差一种。当你找到A - B.VPA.近似B.32位数字。展示这种行为。

A  -  VPA(B,32)
ans = 0.0000000000000000 00039803547206/033617370603547206/0336173706035473060336173706035472060336173706033617370603547206033617720603354720603361737060081584720600815844403.

VPA.恢复常用双精度输入的精度

与确切的符号值不同,双重精度值固有地包含圆形错误。你打电话时VPA.在双精度输入,VPA.即使它返回比双精度值更多的数字,也无法恢复丢失的精度。然而,VPA.可以识别并恢复表格表达式的精度P./问:P.π/问:P./问:1/22问:,和10.问:,在哪里P.问:是适度大小的整数。

首先,证明这一点VPA.无法为双精度输入恢复精度。呼叫VPA.在双精度结果和相同的符号结果。

dp = log(3);s = log(sym(3));DPVPA = VPA(DP)SVPA = VPA(S)D = SVPA  -  DPVPA
DPVPA = 1.0986199065 SVPA = 1.09861228866809691952452369225d = 0.00000000 0001,0001d = 0.0986228866809692225d = 0.00000000 0001,000

正如预期的那样,双重精度结果与16的确切结果不同TH.小数位。

证明VPA.恢复表单表达式的精度P./问:P.π/问:P./问:1/22问:,和10.问:,在哪里P.问:是适度的大小整数,通过找到差异VPA.呼吁双重精度结果和精确的符号结果。差异是0.0表明这一点VPA.在双精度输入中恢复损失精度。

VPA(1/3) -  VPA(1 / SYS(3))VPA(PI) -  VPA(SYM(PI))VPA(1 / SQRT(2)) -  VPA(1 / SQRT(SYM(2)))VPA(2 ^ 66) -  VPA(2 ^ SYM(66))VPA(10 ^ 25) -  VPA(10 ^ SYM(25))
ans = 0.0 ans = 0.0 ans = 0.0 ans = 0.0 ans = 0.0

输入参数

全部收缩

输入以评估,指定为数字,向量,矩阵,多维数组或符号编号,矢量,矩阵,多维数组,表达式,函数或字符向量。

有效数字的数量,指定为整数。D.必须大于1和小于 2 29. + 1

提示

  • VPA.不会将指数中的分数转换为浮点。例如,VPA(A ^ SYM(2/5))回报A ^(2/5)

  • VPA.使用比由指定的位数更多的数字数字。这些额外的数字防范随后的计算中的圆形错误,并称为警卫数字。

  • 你打电话时VPA.在数字输入上,例如1/32 ^( - 5), 要么罪(PI / 4),数字表达式被评估为包含循环错误的双重精度编号。然后,VPA.在该双精度编号上调用。对于准确的结果,将数字表达式转换为符号表达式轶事。例如,近似EXP(1), 使用VPA(exp(Sym(1)))

  • 如果是第二个论点D.不是一个整数,VPA.将其舍入到最接近的整数回合

  • VPA.恢复符合表单的数字输入的精度P./问:P.π/问:P./问:1/22问:,和10.问:,在哪里P.问:是适度大小的整数。

  • 使用可变精度算术回合到最近的原子操作。

  • 可变精度算术和IEEE浮点标准754之间的差异是

    • 内部计算,归零划分抛出错误。

    • 指数范围大于任何预定义的IEEE模式。VPA.下面下面大致流出10 ^( - 323228496)

    • 非规范化的数字未实施。

    • 零没有签名。

    • 的数量二进制结果的Mantissa中的数字可能在可变精度算术和IEEE预定义类型之间有所不同。

    • 只有一个表示。在安静和信令之间没有区别

    • 没有浮点数例外可用。

在R2006A之前介绍