我是Octave的新手,我有一个问题。我认为以下代码是相同的,但它们会产生不同的结果。有什么不同?谢谢
Octave / Matlab:e ^( - 1 * z)和exp(-1 * z)之间的差异
r = 1 /(1 + e ^( - 1 * 3));
g = 1./(1 + exp(-1 * z));
其中z是矢量,元素或矩阵
exp(1)
等于e
,其中e
是Euler's number。
这里有4个操作/功能:
e^x
与expm(x)
相同,e.^(x)
与exp(x)
相同。
e^x
和expm(m)
代表e
加注到矩阵x
。e.^(x)
和exp(x)
代表矩阵x
中每个元素的指数ex。如果x
是一个标量,则所有(e^x
,expm(x)
,e.^x
和exp(x)
)在数学上是相等的。
对于您的情况,z
是一个矩阵,因此您得到不同的结果。
e
未在MATLAB中定义。 exp(x)
和expm(x)
在MATLAB中的定义与上述Octave中描述的定义相同。
PS:e
或E
也用于MATLAB和Octave中的E-notation,但这是另一回事。
在Octave中,重要的是要注意e^x
和exp(x)
,其中x
是双精度标量变量,不一定相同。
例如:
>> a = e ^ 2
a = 7.3891
>> b = exp (2)
b = 7.3891
>> b - a
ans = 8.8818e-16
原因是exp (2)
使用专用算法来计算指数函数,而e ^ 2
实际上调用函数e ()
来获得e的值,然后将其平方:
>> c = realpow (e (), 2)
c = 7.3891
>> c - a
ans = 0
e ^ x
和exp (x)
不同的另一个原因是,当x
是一个方阵时,他们计算完全不同的东西,但这已经在Sardar的答案中讨论过了。