相同的公式,但在Matlab和Excel中有不同的结果
我有一个公式:
800/(0.3*F6)*((20/SQRT(3.14*E6*A6^3))*EXP(-(40-F6*A6)^2/4*F6*A6)) A6 = 1 E6 = 1 F6 = 1
Excel中的答案是4.1592E + 169,但是Matlab报告的答案是2.1780e-161。
我在这里想念什么?
谢谢。
这是由于在Excel中的运算符优先级,其中-2^2 = (-2)^2 = 4
,而在MATLAB中为-2^2 = -(2^2) = -4
。
因此,Excel中的-(40-F6*A6)^2
是(-(40-F6*A6))^2
,在MATLAB中是-((40-F6*A6)^2)
。
MATLAB中的操作顺序是不同的。 MATLAB的计算就像在Excel公式中有额外的圆括号一样:
Excel: EXP(-(40-F6*A6)^2/4*F6*A6))
Excel匹配MATLAB: EXP(-((40-F6*A6)^2/4*F6*A6)))
MATLAB来匹配Excel: exp((-(40-F6*A6))^2/4*F6*A6)
也就是说, MATLAB的运算符优先级 mpower
( ^
)高于括号内的所有值。 因此,它将在否定之前执行^
操作,除非将其放在括号内。