我刚开始接触Octave,遇到了一个问题。我以为下面的代码是一样的,但它们产生了不同的结果。有什么区别吗?谢谢。
Octave/Matlab: e^(-1*z)和exp(-1*z)之间的区别
g = 1./(1 + e^(-1*z));
g = 1./(1 + exp(-1*z));
这里z可以是一个向量、元素或矩阵。
e^x
和exp(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 ^ x
和exp(x)
不同的原因是,当x
是一个方阵时,它们计算的是完全不同的东西,但这已经在Sardar的回答中讨论过了。
expm(x)
。 - Ben Voigt