主要内容

提高数值计算的精度

默认情况下,MATLAB®使用16位精度。如果需要更高的精度,请使用vpa函数在符号数学工具箱™中。vpa提供可变的精度,可以无限制地增加。

当你选择可变精度算法时,默认情况下,vpa使用32位有效的十进制精度。有关详细信息,请参见选择数字或符号算术.参数可以设置更高的精度数字函数。

使用默认的32位精度近似求和。如果至少有一个输入用vpa,所有其他输入自动转换为可变精度。

vpa (1/3) + 1/2
ans = 0.83333333333333333333333333333333

必须用vpa,如exp (vpa (200)).否则,通过MATLAB自动将输入转换为双精度。

增加精度到50数字用数字保存旧的价值数字digitsOld.重复之和。

digitsOld =数字(50);Sum50 = vpa(1/3) + 1/2
sum50 = 0.83333333333333333333333333333333333333333333333333

为进一步计算恢复旧的数字值。

数字(digitsOld)

请注意

vpa输出是象征性的。要使用不接受符号值的MATLAB函数的符号输出,可以通过使用将符号值转换为双精度

检查当前的数字设置通过调用数字

数字
数字= 32

更改单个的精度vpa通过指定精度作为第二个输入来调用vpa.此呼叫不受影响数字.例如,近似πOne hundred.位数。

vpa(π,100)
Ans = 3.14159265358979323846264338327950288419716939937510582097494 4592307816406286208998628034825342117068
数字%数字仍然是32
数字= 32

可变精度可任意增加。找到π500位数。

digitsOld =数字(500);vpa (pi)数字(digitsOld)
ans = 3.1415926535897932384626433832795028841971693993751058209749 445923078164062862089986280348253421170679821480865132823066 470938446095505822317253594081284811174502841027019385211055 445923078164062862089986280348253421170679821480865132823066 652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903 600113305305488204665213841469919415116094330572703657595919 530921861173819326117931051185480744623799627495673518857527 248912279381830119491

数字vpa控制数量重要的小数位数。例如,近似1/1114位精度返回小数点后的6位,因为前两位是零。

vpa (1/111, 4)
ans = 0.009009

请注意

如果你想提高性能减少精密,看通过降低精度来提高速度