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

16

我刚开始接触Octave,遇到了一个问题。我以为下面的代码是一样的,但它们产生了不同的结果。有什么区别吗?谢谢。

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

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

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

这里z可以是一个向量、元素或矩阵。

2个回答

24

在Octave中

exp(1)等于e,其中e欧拉数

这里有4个需要注意的操作/函数:

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

  • e^xexpm(m)表示矩阵xe次方。
  • e.^(x)exp(x)表示矩阵x中每个元素的指数ex
如果x是一个标量,那么e^xexpm(x)e.^xexp(x)在数学上是相等的。对于你的情况,z是一个矩阵,因此你会得到不同的结果。

在MATLAB中,

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


PS:在MATLAB和Octave中,eE也用于E表示法,但那是另一回事。


2
然后还有 expm(x) - Ben Voigt

5
在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的回答中讨论过了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接