Octave / Matlab:e ^( - 1 * z)和exp(-1 * z)之间的差异

时间:2018-03-04 19:05:44

标签: matlab octave

我是Octave的新手,我遇到了问题。我认为以下代码是相同的,但它们会产生不同的结果。有什么不同?感谢

Octave / Matlab:e ^( - 1 * z)和exp(-1 * z)之间的差异

g = 1./(1 + e ^( - 1 * z));

g = 1./(1 + exp(-1 * z));

其中z是向量,元素或矩阵

2 个答案:

答案 0 :(得分:13)

在Octave

exp(1)等于e,其中eEuler's number

这里有4个操作/功能:

e^xexpm(x)相同,e.^(x)exp(x)相同。

  • e^xexpm(m)代表e加注到矩阵x
  • e.^(x)exp(x)代表矩阵x中每个元素的指数e x

如果x是标量,那么所有(e^xexpm(x)e.^xexp(x))在数学上都是相同的。
对于您的情况,z是一个矩阵,因此您会得到不同的结果。

在MATLAB中,

e未在MATLAB中定义。 exp(x)expm(x)在MATLAB中的定义与上面针对Octave描述的定义相同。

PS: eE也用于MATLAB和Octave中的E-notation,但这是另一回事。

答案 1 :(得分:3)

在Octave中,重要的是要注意e^xexp(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 ^ xexp (x)不同的另一个原因是,当x是方形矩阵时,它们会计算完全不同的东西,但这已在Sardar的答案中讨论过。