为什么“pi”在MATLAB中成为象征性的?

时间:2014-05-17 03:59:18

标签: matlab symbolic-math

在Matlab命令窗口中输入:

syms f;
s = 2*pi*f*j;
s

返回

s =

pi*f*2*j

为什么pi不计算为3.141592 ...?我在命令窗口输入的代码出了什么问题?

1 个答案:

答案 0 :(得分:5)

欢迎使用符号数学,您可以获得精确答案而不是浮点近似值。如果你只想得到一个数字"您可以使用非符号函数和操作,也可以将符号结果转换回浮点数。

例如:

syms f
s = pi*f*2*j
s2 = subs(s,f,2)
s3 = double(s2)

或者,您可以使用变量精度算术将pi表示为符号表达式中指定级别的十进制近似值:

syms f
s = vpa(pi)*f*j

有关详细信息,请参阅documentation for vpa。您还可以使用sym函数来实现类似的功能。

但是,如果过早转换为十进制或浮点表示,则可能会失去一些符号数学的功能。例如,比较以下表达式之间的差异:

sin(pi)      % 1.224646799147353e-16
sin(vpa(pi)) % -3.2101083013100396069547145883568e-40
sin(sym(pi)) % 0, sin(sym(1)*pi) and sin(sym(pi,'r')) also return zero

只有最后一个将从表达式中完全取消,从而简化了它。