【发布时间】:2016-07-31 21:11:03
【问题描述】:
我有一个非常小的数字除以非常小的数字,MATLAB 给我 Inf(当 x 太小)或 NaN(当 x 为零时)。但正确的极限值应该是2。如何解决这个问题?如果x 或x = 0 太小,将j 设为2?
x = 0.000001
>> x = 0.000001
x =
1.0000e-06
>> j = 2*x*(1+(-1)*exp(-x))^(-1)*exp(-x)
j =
2.0000
x = 0.01
>> x = 0.01
x =
0.0100
>> j = 2*x*(1+(-1)*exp(-x))^(-1)*exp(-x)
j =
1.9900
x = 1e-19
>> x = 1e-19
x =
1.0000e-19
>> j = 2*x*(1+(-1)*exp(-x))^(-1)*exp(-x)
j =
Inf
x = 0
>> x = 0
x =
0
>> j = 2*x*(1+(-1)*exp(-x))^(-1)*exp(-x)
j =
NaN
【问题讨论】:
-
你能清理一下公式吗?我不明白你要计算什么。我只看到 (-1).*x 是 -x 和 exp(1)^something 这只是 exp(something)。请不要让它过于复杂
-
@Andreas H. 我做到了。你能帮帮我吗?
-
Inf边界的快速解决方法。使用min函数:f = @(x) min( 2 , 2*x*exp(-x)/(1-exp(-x)) );
标签: matlab