gpt4 book ai didi

python - 由于使用 exp() Python 精度不足而除以零

转载 作者:行者123 更新时间:2023-12-01 04:10:56 26 4
gpt4 key购买 nike

我正在使用二分算法来查找函数的最大值。

这是我的代码:

from math import exp

h = 6.62606876e-34
c = 2.99792458e8
k = 1.3806504e-23
T = 7000
epsilon = 1.e-10

def fct(lam) :
return 2*h**2*c**3*exp(h*c/(lam*k*T))/(k*T*lam**7*(exp(h*c/(lam*k*T)) - 1)) - 10*c**2*h/(lam**6*(exp(h*c/(lam*k*T)) - 1))

lam1 = 100.e-9
lam2 = 1000.e-9

delta = lam2 - lam1

f1 = fct(lam1)
f2 = fct(lam2)

while delta > epsilon :
lamm = 0.5*(lam1 + lam2)
fm = fct(lamm)
f2=fct(lam2)
if fm*f2 > 0 :
lam2 = lamm
else :
lam1 = lamm
delta = lam2 - lam1
print('racine de la fonction: {}+/-{}'.format(lamm,delta))

问题是,由于 float 的精度有限,当计算 fm = fct(lamm) 行时,我会得到除以零的错误。

如何解决这个问题?

最佳答案

我认为在 python 中做数学的最佳选择是使用众多数学处理库之一。 https://stackoverflow.com/a/13442742/2534876建议 mpmath 解决您的浮点问题。 bigfloat 可能就足够了。 numpy 还具有用于此目的的 float128 之类的东西。

四处挖掘并找到你喜欢的东西。

关于python - 由于使用 exp() Python 精度不足而除以零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34968672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com