use*_*632 2 matlab symbolic-math
在Matlab命令窗口中输入:
syms f;
s = 2*pi*f*j;
s
Run Code Online (Sandbox Code Playgroud)
返回
s =
pi*f*2*j
Run Code Online (Sandbox Code Playgroud)
为什么pi不计算为3.141592 ...?我输入命令窗口的代码出了什么问题?
欢迎使用符号数学,您可以获得精确答案而不是浮点近似值.如果您只想"获取数字",则可以使用非符号函数和操作,也可以将符号结果转换回浮点数.
例如:
syms f
s = pi*f*2*j
s2 = subs(s,f,2)
s3 = double(s2)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用变量精度算术表示pi符号表达式中指定级别的十进制近似值:
syms f
s = vpa(pi)*f*j
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅文档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
Run Code Online (Sandbox Code Playgroud)
只有最后一个将从表达式中完全取消,从而简化了它.