主要内容

选择数字或符号算术

Symbolic Math Toolbox™通过使用数字或符号算术对数字进行操作。在数字算术中,可以使用双精度或变量精度以浮点格式表示数字。在符号算术中,用数字的精确形式表示数字。本主题比较双精度、变量精度和符号算术。

双精度算术

用MATLAB进行数值计算®默认使用双精度算术。例如,评估表达式10001/1001,π., 2 。结果转换为双精度值。

x = 10001/1001 y = pi z = sqrt(2)
X = 9.9910 y = 3.1416 z = 1.4142

有关双重精度算术的更多信息,请参阅浮点数字。当您没有符号数学工具箱或正在使用不接受符号输入的函数时,建议使用此算法。否则,建议使用精确符号算法和变精度算法。要将符号值转换为双精度,请使用双倍的功能。

可变精度运算

可变精度算术使用vpa.是符号数学工具箱中的数字计算的推荐方法。使用可变精度算术执行计算时,可以指定有效数字的数量。

例如,使用vpa.评估分数10001/1001。默认情况下,vpa.评估输入到32个有效数字。近似分数10001/1001至少32位有效数字。

vpa (10001/1001)
ANS = 9.991008991008991008991008991009.

将分数近似到至少8位。通过使用使用的更改有效数字的数量数字功能。

数字(8);vpa (10001/1001)
ans = 9.991009.

在可变精度算术中,您可以增加有效数字的数量更精确的精度。或者,你可以减少有效数字的数量为了更快计算和减少内存使用率。

象征性的算术

符号数学工具箱提供轶事纽带执行确切的功能符号计算。在符号算术中,您可以执行涉及数字和变量的精确形式的计算,例如X / 2.2 ^ (1/2), 或者π。下面三个例子展示了在符号算术中执行的几个计算。

表达不合理的数字

利用轶事创建符号数字。表达不合理的数量π 2 象征性的形式。

x = sym(pi)y = sqrt(sym(2))
x = pi y = 2 ^(1/2)

使用大整数执行计算

当您声明一个数字时,MATLAB自动将该数字转换为双精度。例如,声明整数80435758145817515作为的输入参数轶事。这个数字失去了它的准确性,因为它大于最大的连续整数Flintmax.在双精度,是2 ^ 53.

Z = 80435758145817515 ZinAccurate = Sym(80435758145817515)
z = 8.0436e + 16 zinaccurate = 80435758145817520
要准确地将大整数声明为符号数,请使用带单引号的字符向量作为输入参数轶事

Zaccurate =符号(' 80435758145817515 ')
zaccurate = 80435758145817515

然后,您可以准确地使用符号算术执行大型整数的计算。例如,评估三个大整数的多维数据集的总和。

Z1 = sym('12602123297335631') Z3 = sym('-80538738812075974') Zsum = Z1^3 + Z2^3 + Z3^3
Z1 = 80435758145817515 Z2 = 12602123297335631 Z3 = -80538738812075974

解决数学方程

通过符号算术,您可以解决数学方程式。例如,解决二次方程斧头2+BX.+C= 0.。利用纽带声明变量X和系数一个B.,C在二次方程中。

Syms a b c x eqn = a*x^2 + b*x + c == 0;

使用解决方案金宝搏官方网站解决并将其作为象征性表达返回。

溶胶=解决(eqn, x)
溶胶= - (b + b ^ 2 - 4 * * c) ^ (1/2)) / (2 *) - (b - b (^ 2 - 4 * * c) ^ (1/2)) / (2 *)

利用subs替换系数的符号值。放一个= 1,B.= 2,C= 3。将二次方程的解决方案作金宝搏官方网站为符号数字返回。

solsSym = subs(sols,[a b c],[1 2 3])
solssym =  - (8 ^(1/2)* 1i)/ 2  -  1(8 ^(1/2)* 1i)/ 2  -  1

然后,您可以以双精度或可变精度将符号解决方案转换为浮点格式。金宝搏官方网站

数字(32);solsDouble = double(solsSym) solsVpa = vpa(solsSym)
solsdouble = -1.0000  -  1.4142i -1.0000 + 1.4142i solsvpa =  -  1.0  -  1.41421356237309504880168887242097i  -  1.4142135623730950488016887242097i  -  1.414213562373095048801688724880168872488016887242097i

数字和符号算术的比较

下表比较了双重精度,可变精度和符号算法。

双精度 可变精度 象征性的
例1:评估罪(π)
a = pi sin(pi)
A = 3.1416 ans = 1.2246e-16
B = VPA(PI)SIN(B)
B = 3.141592653588433832626433832798 ANS = -3.21010830131003960695471458835954714588356871458835687145883568714588356847145883568
c = sym(pi)sin(c)
C = ans = 0
例2:评估1 - 3 *(4/3 - 1)
a = 4/3 1  -  3 *(a  -  1)
A = 1.3333 ans = 2.2204e-16
数字(16);B = vpa(4/3) 1 - 3*(B - 1)
B = 1.33333333333333 ANS = 3.3087224502121110-24
C = sym(4)/ (1 - 1)
C = 4/3 ans = 0
使用的功能 双倍的 vpa.
数字
轶事
数据类型 双倍的 轶事 轶事
圆形错误 是的,答案有16位精度。 是的,数字数取决于所使用的精度。 不,结果是准确的。
速度 快点 更快,取决于使用的精度 最慢
内存使用情况 至少 变量,取决于所使用的精度 最伟大的

相关的话题