我是Octave的新手,我遇到了问题。我认为以下代码是相同的,但它们会产生不同的结果。有什么不同?感谢
Octave / Matlab:e ^( - 1 * z)和exp(-1 * z)之间的差异
g = 1./(1 + e ^( - 1 * z));
g = 1./(1 + exp(-1 * z));
其中z是向量,元素或矩阵
答案 0 :(得分:13)
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
中每个元素的指数e x 。如果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,但这是另一回事。
答案 1 :(得分:3)
在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的值,然后将其平方:< / p>
>> c = realpow (e (), 2)
c = 7.3891
>> c - a
ans = 0
e ^ x
和exp (x)
不同的另一个原因是,当x
是方形矩阵时,它们会计算完全不同的东西,但这已在Sardar的答案中讨论过。