matlab - 用非常小的值计算matlab中的函数

标签 matlab precision exponential epsilon

我正在 matlab 中创建一个函数来计算以下函数:

enter image description here

对于这个函数我们有:

enter image description here

这是我在 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 1 在浮点表示中与 1+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/

相关文章:

c++ - 浮点相等

python - 在 ndarray 中查找 float

java - 为什么java将double转换为指数形式

Matlab:比较两个具有不同长度和不同值的向量?

matlab - 回调函数中的 Getrect() 有运行时错误

c++ - double 整数和超长整数之间的精度差异是多少?

r - 用指数估计填空

matlab - 识别matlab中的相邻像素

matlab - 加速稀疏 FFT 计算

math - 具有指定中点的指数音量控制