我正在尝试计算函数sinh(k-k*x)/sinh(k)
的逐点值,其中k=1e4
和x
的取值介于0和1之间。该函数本质上是指数函数的总和。当然,尝试计算exp(1e4)
会导致溢出错误。但是,上面的实际函数只接受0到1之间的值,因此我想知道是否有一种巧妙的方法可以为指定范围内的x
的任意值计算函数。
该功能可以扩展为表格
exp(k-k*x)/(exp(k)-exp(-k)) - exp(k*x-k)/(exp(k)-exp(-k))
我想先尝试对数,看看是否有任何简化,但我看不出有什么办法。有人对我有如何处理此问题的建议吗?我现在正在使用Python工作,但我认为这里的语言无关紧要。
答案 0 :(得分:1)
如果您选择y=1-x
,则尝试对此进行评估
(e^(ky)-e^(-ky)) / (e^k - e^(-k))
那是
e^(ky) * (1 - e^(-2ky)) / (e^k * (1 - e^(-2k)))
然后
e^(ky)/e^k = (e^k)^y * (e^k)^(-1) = (e^k)^(y-1) = e^(k(y-1)) = e^(-kx)
可以评估其他因素(1 - e^(-2ky)) / (1 - e^(-2k))
而不会发生溢出。