Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab符号数学工具箱有bug吗?_Matlab_Symbolic Math - Fatal编程技术网

Matlab符号数学工具箱有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/(

你好,我有一个问题。当我在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/(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