Matlab符号数学工具箱有bug吗?
你好,我有一个问题。当我在matlab中计算除法时:x/(pi.^2) 正确答案是x/9.8696,那么为什么matlab会给我这个结果呢 它是一个bug吗?不,它不是bug:Matlab符号数学工具箱有bug吗?,matlab,symbolic-math,Matlab,Symbolic Math,你好,我有一个问题。当我在matlab中计算除法时:x/(pi.^2) 正确答案是x/9.8696,那么为什么matlab会给我这个结果呢 它是一个bug吗?不,它不是bug: 2778046668940015/281474976710656 = 9.8696 必须使用vpa()命令“可变精度算术”。检查此代码: syms x real; % define x as a real symbolic variable (not a complex variable) vpa( x/(
2778046668940015/281474976710656 = 9.8696
必须使用vpa()命令“可变精度算术”。检查此代码:
syms x real; % define x as a real symbolic variable (not a complex variable)
vpa( x/(pi.^2), 5) % second argument define number of significant digits
对于涉及pi的三角表达式,有时最好定义sym('pi'):
我尝试在使用符号工具箱时始终使用“real”标记。如果你不使用它,你会看到很多复杂的共轭和其他对你的问题不重要的东西,因为x可能是实变量
希望这有帮助,这是MATLAB提供给您的有理近似值。不,这不是一个bug,使用数值近似符号工具箱函数(在mathematica中是N[],忘记matlab是什么)确实是。请注意,
281474976710656/277804668940015~=1/9.8696
。符号数学工具箱试图通过推迟浮点计算来尽可能保持精度。由于pi本质上是无理的,所以它使用这个近似值。double(blah)
另请注意,如果你用pi等进行符号计算,请使用sym('pi')
获得pi的符号表示,而不是近似值。我明白了,这不是错误,这是有理近似值的精度。谢谢
syms x real; % define x as a real symbolic variable (not a complex variable)
vpa( x/(pi.^2), 5) % second argument define number of significant digits
syms x real;
pi_s = sym('pi');
expr = x/pi_s^2