我是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
这里有4个操作/功能:
e^x与...相同expm(x)并且e.^(x)相同exp(x).
e^x并expm(m)表示e提升到矩阵x. e.^(x)并exp(x)表示矩阵中每个元素的指数e xx.如果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,但这是另一回事.
小智 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 ^ x及exp (x)不同的是,他们计算出完全不同的事情时,x是方阵,但是这已经在萨达尔的答案进行讨论。
| 归档时间: |
|
| 查看次数: |
6274 次 |
| 最近记录: |