vpa
变精度算法(任意精度算法)
金宝app移除对不定义数字的字符向量的支持。相反,首先创建符号数字和变量使用信谊
而且信谊
,然后对它们进行操作。例如,使用Vpa((1 +根号(sym(5)))/2)
而不是Vpa('(1 +√(5))/2')
.
描述
例子
用变精度算术计算符号输入
用可变精度浮点算法计算符号输入。默认情况下,vpa
计算值为32位有效数字。
P = sym(pi);vpa = vpa(p)
pVpa =
信谊xA = sym(1/3);F = a*sin(2*p*x);fVpa = vpa(f)
fVpa =
用变精度算法计算向量或矩阵的元素。
V = [x/p a^3];vpa = vpa(V)
VVpa =
M = [sin(p) cos(p/5);exp (p * x) x /日志(p)];MVpa = vpa(M)
MVpa =
使用的更改精度vpa
默认情况下,vpa
计算输入为32位有效数字。属性可以更改有效位数数字
函数。
近似表达式100001/10001
使用7位有效数字数字
.保存的旧值数字
返回的数字(7)
.的vpa
函数只返回5位有效数字,这可能意味着其余数字为零。
digitsOld =数字(7);Y = sym(100001)/10001;yVpa = vpa(y)
yVpa =
的更高精度值,检查剩余数字是否为零25
.结果表明,剩余的数字实际上是零,是重复小数的一部分。
yVpa = vpa(y)
yVpa =
或者,重写数字
单人房vpa
调用时,通过指定第二个参数来更改精度。
通过指定第二个参数,找到π到100位有效数字。
vpa = vpa(pi,100)
pVpa =
中恢复原始精度值digitsOld
为了进一步计算。
数字(digitsOld)
数值近似符号结果
虽然象征性的结果是准确的,但它们可能不是一种方便的形式。你可以使用vpa
数值近似:数值接近精确的符号结果
求其根的高次多项式解决
.的解决
函数不能符号化地求解高次多项式,并使用根
.
信谊xY = solve(x^4 - x + 1, x)
y =
使用vpa
从数值上近似根号。
yVpa = vpa(y)
yVpa =
vpa
使用保护数字保持精度
的值数字
函数指定使用的最小有效位数。在内部,vpa
可以使用更多的数字比数字
指定。这些额外的数字被称为保护数字,因为它们可以防止后续计算中的舍入错误。
数值近似1/3
使用四位有效数字。
A = vpa(1/3,4)
一个=
近似结果一个
使用20位数字。结果表明,工具箱内部在计算时使用了4位以上的数字一个
.由于舍入错误,结果中的最后一位数字是不正确的。
aVpa = vpa(a,20)
aVpa =
避免隐藏的舍入错误
隐藏的舍入错误可能导致意想不到的结果。
评估1/10
默认是32位精度,然后是10位精度。
A = vpa(1/10,32)
一个=
B = vpa(1/10,10)
b =
从表面上看,一个
而且b
是平等的。通过求来检验它们是否相等A - b
.
舍入= a - b
舍入=
差值不等于零,因为b
只计算了10
精度的数字,包含更大的舍入误差一个
.当你发现A - b
,vpa
接近b
32位数字。演示这种行为。
舍入= a - vpa(b,32)
舍入=
vpa
恢复普通双精度输入的精度
与精确的符号值不同,双精度值固有地包含舍入误差。当你打电话时vpa
在双精度输入下,vpa
不能恢复丢失的精度,即使它返回比双精度值更多的数字。然而,vpa
能否识别和恢复形式表达的准确性
,
,
,
,
,在那里
而且
是中等大小的整数。
首先,证明vpa
无法恢复双精度输入的精度。调用vpa
在双精度结果和相同的符号结果上。
Dp = log(3);S = log(sym(3));dpVpa = vpa(dp)
dpVpa =
sVpa = vpa(s)
sVpa =
d = sVpa - dpVpa
d =
正如预期的那样,双精度结果与小数点后第16位的精确结果不同。
证明vpa
恢复窗体表达式的精度
,
,
,
,
,在那里
而且
都是中等大小的整数,通过求vpa
调用双精度结果和精确的符号结果。区别在于
显示,vpa
为双精度输入恢复丢失的精度。
D = vpa(1/3) - vpa(1/sym(3))
d =
D = vpa(pi) - vpa(sym(pi))
d =
D = vpa(1/√(2))- vpa(1/√(sym(2)))
d =
D = vpa(2^66) - vpa(2^sym(66))
d =
D = vpa(10^25) - vpa(10^sym(25))
d =
用变精度算法求符号矩阵变量
创建一个符号表达式年代
代表
,在那里
是一个2乘1的符号矩阵变量。
信谊X(2 - 1)矩阵S = sin(hilb(2)*pi*X)
S =
用变精度算法计算表达式。
SVpa = vpa(S)
SVpa =
输入参数
x
- - - - - -评估的输入
数量|向量|矩阵|多维数组|象征性的数量|象征性的向量|象征性的矩阵|符号多维数组|符号表达式|符号函数|符号字符向量|符号矩阵变量
要计算的输入,指定为数字、向量、矩阵、多维数组,或符号数字、向量、矩阵、多维数组、表达式、函数、字符向量或矩阵变量。
d
- - - - - -有效位数
正整数标量
有效数字数,指定为正整数标量。d
必须大于1且小于
.
提示
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在以下方面:
在计算中,除以0会抛出一个错误。
指数范围大于任何预定义的IEEE模式。
vpa
下面的底流约为10 ^ (-323228496)
.没有实现非规格化的数字。
0没有符号。
的数量二进制结果尾数中的数字在可变精度算术和IEEE预定义类型之间可能不同。
只有一个
南
表示。安静和发信号之间没有区别南
.没有可用的浮点数异常。
版本历史
R2006a之前介绍R2022b:用变精度算术计算符号矩阵变量
可以计算类型为的符号矩阵变量symmatrix
采用可变精度算法。结果是一个具有可变精度数字和类型标量变量的符号表达式信谊
.有关示例,请参见用变精度算法求符号矩阵变量.
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。