选择数字或符号运算

符号数学工具箱™上的数字通过使用数字或符号运算工作。在数字算术,你表示使用任一双精度或可变精度浮点格式的数字。在象征性的算术,你代表了他们的确切形式的数字。这个话题比较双精度,精度可调,并象征性的算术。

双精度运算

在MATLAB数值计算®默认情况下使用双精度运算。例如,对表达式求值10001/1001,π 2 。结果被转换为双精度值。

x = 1000 /1001 y = z =√2
X = 9.9910 Y = 3.1416 Z = 1.4142

有关双精度运算的更多信息,请参见浮点数。建议使用此算法,当您没有符号数学工具箱或正在使用不接受符号输入功能做。否则,建议精确符号运算和可变精度运算。为了一个象征性的值转换为双精度,使用函数。

可变精度算术

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

例如,使用vpa计算分数10001/1001。默认情况下,vpa将输入计算为32位有效数字。近似的分数10001/1001到至少32个显著数字。

VPA(1001分之10001)
ans = 9.991008991008991008991008991009

将该分数近似为至少8位有效数字。方法更改有效数字的数目数字函数。

数字(8);VPA(1001分之10001)
ans = 9.991009

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

算术符号

符号数学工具箱提供信谊信谊执行精确的函数符号计算。在象征性的运算,可以在他们的确切形式执行涉及数字和变量计算,如x / 2,2 ^(1/2),或PI。下面的三个例子表明,在象征性的运算执行几种计算。

表达无理数

使用信谊创造符号数字。表达无理数π 2 以符号形式。

x = sym(pi) y =√(sym(2))
x = y = 2的1/2次方

与大整数进行计算

当你声明一个数字,MATLAB自动转换为双精度数。例如,声明整数80435758145817515作为输入参数信谊。数字失去了它的精确度,因为它比连续的最大整数更大flintmax双精度,也就是2 ^ 53

z不准= sym(80435758145817515)
z不准= 80435758145817520
为了准确地声明一个大的整数作为符号数,使用具有单引号的字符向量作为输入参数信谊

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

然后可以使用符号算术精确地执行大整数的计算。例如,计算三个大整数的立方体的和。

Z1 =符号( '80435758145817515')Z2 =符号( '12602123297335631')Z3 =符号( ' -  80538738812075974')Zsum = Z1 ^ 3 + Z2 ^ 3 + Z3 ^ 3
Z1 = 80435758145817515 Z2 = Z3 12602123297335631 = -80538738812075974 Zsum = 42

解决数学方程

用符号算术,你可以解一个数学方程。例如,解二次方程斧头2+bx+c= 0。使用信谊要声明变量x和系数一个,bc在二次方程中。

SYMS A B C X等式= A * X ^ 2 + B * X + C == 0;

使用以下方法找到解金宝搏官方网站决方案解决并将它们作为符号表达式返回。

溶胶=解决(等式,x)的
溶胶=  - (B +(B ^ 2  -  4 * A * C)^(1/2))/(2 * A) - (B  - (B ^ 2  -  4 * A * C)^(1/2))/(2 * A)

使用潜艇用符号值代替系数。集一个= 1,b= 2,c= 3。返回二次方程的解作为符金宝搏官方网站号数。

solsSym =潜艇(溶胶,[A B C],[1 2 3])
solsSym = - (8^(1/2)*1i)/2 - 1 (8^(1/2)*1i)/2 - 1

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

数字(32);solsDouble =双(solsSym)solsVpa = VPA(solsSym)
solsDouble = -1.0 - 1.4142135623730950488016887242097i -1.0 + 1.4142135623730950488016887242097i

数字和符号运算的比较

下表比较了双精度、变精度和符号算法。

双精度 可变精度 象征性的
示例1:评估sin(π)
a = sin()
A = 3.1416 ANS = 1.2246e-16
= vpa(pi) sin(b)
b = 3.1415926535897932384626433832795 ans = -3.2101083013100396069547145883568e-40
= sym(pi) sin(c)
C = PI 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.3333333333333 ans = 3.308722450212111e-24
C =符号(4)/ 3 1  -  3 *(C  -  1)
c = 4/3 ans = 0
函数的使用 vpa
数字
信谊
数据类型 信谊 信谊
舍入误差 是的,答案有16位的精度。 是的,数字的数量取决于使用的精度。 不,结果是准确的。
速度 更快,这取决于所使用的精度 最慢的
内存使用情况 至少 变量,取决于所使用的精度 最大的

相关话题