变精度算法(任意精度算法)
万博1manbetx对于没有定义多个特征向量的支持已被删除。取而代之的是,首先使用符号数和变量信谊
和信谊
,然后对其进行操作。例如,使用VPA((1个+ SQRT(符号(5)))/ 2)
而不是vpa ((1 +√6 (5) / 2”)
。
用可变精度浮点运算计算符号输入。默认情况下,VPA
计算值,以32个显著数字。
SYMS X P =符号(PI);piVpa = VPA(p)的
piVpa = 3.1415926535897932384626433832795
a =符号(1/3);f = a * sin (2 * p * x);fVpa = vpa (f)
fVpa = 0.33333333333333333333333333333333 * sin (6.283185307179586476925286766559 * x)
用变精度算术计算向量或矩阵的元素。
V = [X / P A ^ 3];M = [罪(P)COS(P / 5);EXP(P * X)X /日志(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
函数只返回5个有效数字,这意味着其余数字为零。
digitsOld =位(7);Y =符号(100001)/ 10001;VPA(y)的
ans = 9.9991
检查剩下的数字是零通过使用更高的精度值25
。结果表明,其余数实际上是一个循环小数。
数字(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)的
(2)根(z^4 - z + 1, z, 3)根(z^4 - z + 1, z, 4)
用VPA
到数值近似根。
yVpa = VPA(y)的
yVpa我0.72713608449119683997667565867496 + 0.43001428832971577641651985839602 = 0.72713608449119683997667565867496 - 0.43001428832971577641651985839602 - 0.72713608449119683997667565867496 - 0.93409928946052943963903028710582 - 0.72713608449119683997667565867496 + 0.93409928946052943963903028710582我
VPA
使用保护数字来保持精度的价值数字
函数指定使用的最小有效位数。在内部,VPA
可以用更多的数字吗数字
指定。这些额外的数字被称为后卫的数字,因为他们警惕后续计算舍入误差。
数值近似1/3
使用四个显著数字。
一个VPA =(1/3,4)
A = 0.3333
近似的结果一个
使用20位。结果表明,工具箱计算当在内部使用多于四个数字一个
。在结果的最后一个数字是由于舍入误差不正确的。
VPA(A,20)
ans = 0.33333333333303016843
隐藏的舍入错误会导致意想不到的结果。
评估1/10
使用默认的32位精度,然后使用10位精度。
a = vpa(1/ 10,32)
a = 0.1 b = 0.1
从表面上看,一个
和b
是平等的。通过查找来检查它们是否相等一个 - B
。
一个 - B
ANS = 0.000000000000000000086736173798840354720600815844403
所不同的是不等于零,因为b
与只计算10
的精度,包含较大的舍入误差一个
。当你发现一个 - B
,VPA
近似的b
与32位。证明这种行为。
一个 - VPA(B,32)
ANS = 0.000000000000000000086736173798840354720600815844403
VPA
恢复普通双精度输入的精度不同于精确符号值,双精度值本身包含舍入误差。当你打电话VPA
在双精度输入,VPA
不能恢复丢失的精度,即使它返回的数字比双精度值多。然而,VPA
能否识别并恢复形式表达的精度p/问,pπ/问,(p/问)1/2,2问和10问,其中p和问是中等规模的整数。
首先,证明VPA
对于双精度输入无法恢复精度。呼叫VPA
在双精度结果和相同的符号结果。
DP =日志(3);S =日志(符号(3));DPVPA = VPA(DP)sVpa = VPA(S)d = sVpa - DPVPA
sVpa = 1.0986122886685600636126619065 d = 0.000000000000000131331632575016007662559957676652
正如预期的那样,双精度结果与16的精确结果不同th小数位。
证明VPA
恢复表单表达式的精度p/问,pπ/问,(p/问)1/2,2问和10问,其中p和问是中等大小的整数,通过查找VPA
呼吁双精度结果和确切的象征性结果。的差异0.0
显示,VPA
恢复双精度输入中丢失的精度。
VPA(1/3) - VPA(1 /符号(3))VPA(PI) - VPA(符号(PI))VPA(1 / SQRT(2)) - VPA(1 / SQRT(符号(2)))VPA(2 ^ 66) - VPA(2 ^符号(66))VPA(10 ^ 25) - VPA(10 ^符号(25))
ANS = 0.0 ANS = 0.0 ANS = 0.0 ANS = 0.0 ANS = 0.0
VPA
不能将指数中的分数转换为浮点数。例如,vpa(^符号(2/5))
返回^ (2/5)
。
VPA
使用的位数多于指定的位数数字
。这些额外的数字防止后续计算舍入误差,被称为守护位数。
当你打电话VPA
对数值输入,例如1/3
,2 ^ (5)
,或罪(π/ 4)
时,数值表达式进行评估,以包含舍入误差的双精度数。然后,VPA
被称为对双精度数。对于准确的结果,转换数字表达式与符号表达式信谊
。例如,以近似实验(1)
, 用VPA(EXP(符号(1)))
。
如果第二个参数d
不是整数,VPA
四舍五入到最接近的整数回合
。
VPA
为匹配形式的数字输入还原精度p/问,pπ/问,(p/问)1/2,2问和10问,其中p和问是中等规模的整数。
原子操作使用可变精度算术,四舍五入。
变精度算法和IEEE浮点标准754之间的差异是
里面的计算,被零除抛出一个错误。
指数范围比任何预定义模式IEEE较大。VPA
约低于下溢10 ^( - 323228496)
。
没有实现非正规化的数字。
零没有签名。
的数量二进制在结果的尾数数字可以可变精度算术之间不同,并且IEEE预定义类型。
只有一个南
表示。不区分安静和信号南
。
无浮点数异常是可用的。