Matlab,exp函数溢出

Matlab,exp函数溢出,matlab,exp,Matlab,Exp,有谁能建议我如何找到Matlab中函数exp没有溢出的最大值和溢出的最小值。 谢谢大家! 尝试查看函数realmin()或intmin()。它们也有max合作伙伴,例如: realmin('double') realmax('single') intmin('int8') intmax('int64') 这将告诉您可以在MATLAB类型中表示的最小值。低于此值的任何数字都将被设置为给定类型的此最小值。 T = log(realmax('double')); exp(T+255*eps) 给

有谁能建议我如何找到Matlab中函数
exp
没有溢出的最大值和溢出的最小值。

谢谢大家!

尝试查看函数
realmin()
intmin()
。它们也有max合作伙伴,例如:

realmin('double')
realmax('single')
intmin('int8')
intmax('int64')
这将告诉您可以在MATLAB类型中表示的最小值。低于此值的任何数字都将被设置为给定类型的此最小值。

T = log(realmax('double'));

exp(T+255*eps)
给予

1.7977e+308

给予


我可以看到人们如何用这个来回答我认为是OP的问题。但我也能看出OP可能无法为自己找到解决方案的其余部分。你是对的,我没有完全回答这个问题,只是提供了能让OP走上正轨的信息。对不起,我指的是最大价值。。我编辑了这个问题,你能解释一下你从哪里得到的255吗,以及它背后的逻辑,为什么你要计算realmax的log?使用“二分法”。也就是说,我从
exp(T+I*eps)
开始,其中
I=1000
,并检查它是否确实导致溢出。然后设置
i=500
;再次泛滥。设置
i=250
;它不会溢出。然后
i=375
,依此类推。在这种情况下,一种快速而肮脏的方法当然是在循环中增加
i
,直到溢出,但是,在我看来,“二分法”的哲学一般来说是有用的。我希望这会有帮助。当你有一个形式为
exp(x)=y
的方程时,取两边的
log
就可以得到
x=log(y)
exp
log
都是(严格地)递增函数,因此,由于您需要最大的
x
可以在
exp(x)
中使用,因此您需要最大的
y
。现在,为了向后追踪逻辑,我们通过向Matlab询问
realmax('double')
(假设我们将使用
double
精度)的答案,找到了最大的
y
。称这个最大值为y_M。对于x_M,我们有
exp(x_M)=y_M
?我们采用双方的
log
。我希望这有帮助。如果我有什么建议,就写在纸上。谢谢,这很有道理!
exp(T+256*eps)
inf