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

问题描述 投票:7回答:2

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

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

r = 1 /(1 + e ^( - 1 * 3));

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

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

matlab octave
2个回答
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中每个元素的指数ex。

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


在MATLAB中,

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


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


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的值,然后将其平方:

>> c = realpow (e (), 2)
c =  7.3891

>> c - a
ans = 0

e ^ xexp (x)不同的另一个原因是,当x是一个方阵时,他们计算完全不同的东西,但这已经在Sardar的答案中讨论过了。

© www.soinside.com 2019 - 2024. All rights reserved.