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

vic*_*e98 8 matlab octave

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

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

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

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

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

Sar*_*ama 14

在Octave

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

这里有4个操作/功能:

e^x与...相同expm(x)并且e.^(x)相同exp(x).

  • e^xexpm(m)表示e提升到矩阵x.
  • e.^(x)exp(x)表示矩阵中每个元素的指数e xx.

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


在MATLAB中,

e没有在MATLAB中定义. exp(x)并且expm(x)在MATLAB中具有与上面针对Octave描述的定义相同的定义.


PS: e或者E也用于MATLAB和Octave中的E-notation,但这是另一回事.

  • 然后是`expm(x)` (2认同)

小智 5

在 Octave 中,重要的是要注意e^xand exp(x),其中x是双精度标量变量,不一定相同。

例如:

>> a = e ^ 2
a =  7.3891

>> b = exp (2)
b =  7.3891

>> b - a
ans = 8.8818e-16
Run Code Online (Sandbox Code Playgroud)

原因是exp (2)使用专门的算法来计算指数函数,而e ^ 2实际上调用该函数e ()来获取e的值,然后对其进行平方:

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

>> c - a
ans = 0
Run Code Online (Sandbox Code Playgroud)

另一个原因e ^ xexp (x)不同的是,他们计算出完全不同的事情时,x是方阵,但是这已经在萨达尔的答案进行讨论。