在Matlab命令窗口中输入:
syms f;
s = 2*pi*f*j;
s
返回
s =
pi*f*2*j
为什么pi
不计算为3.141592 ...?我在命令窗口输入的代码出了什么问题?
答案 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
只有最后一个将从表达式中完全取消,从而简化了它。