我正在 matlab 中创建一个函数来计算以下函数:
对于这个函数我们有:
这是我在 matlab 中实现的函数:
function [b]= exponential(e)
%b = ?
b= (exp (e) -1)/e;
当我用非常小的值测试函数时,函数的极限确实为 1,但是当数字非常小时(例如 1*e-20),极限变为零?对这种现象的解释是什么?难道我做错了什么?。
x= 10e-1 , f (x)= 1.0517
x= 10e-5 , f (x)= 1.0000
x= 10e-10 , f (x)= 1.0000
x= 10e-20 , f (x)= 0
最佳答案
问题是 exp(x)
大约为 1+x
,但由于 而被计算为
在浮点表示中与 1
11+x
没有区别。有一个 MATLAB 函数 expm1(x)
(这是为小 x
实现的 exp(x)-1
),它可以避免这个问题并且可以工作很好的小论点:
>> x=1e-100;expm1(x)/x
ans =
1
关于matlab - 用非常小的值计算matlab中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003462/