ValueError:使用对数时的数学域错误

时间:2016-10-11 03:02:29

标签: python

我目前正在编写一个代码来查找值C,然后我将与其他参数进行比较。但是,每当我尝试运行我的代码时,我都会收到此错误:ValueError:math domain error。我不确定为什么我会收到这个错误,尽管我认为这是我如何设置我的等式。也许有更好的方法来写它。这是我的代码:

import os
import math


path = "C:\Users\Documents\Research_Papers"

uH2 =5
uHe = 3
eH2 = 2
eHe = 6

R = ((uH2*eH2)/(uHe*eHe))

kH2=[]
kHe=[]

print(os.getcwd()) # see where you are
os.chdir(path) # use a raw string so the backslashes are ok
print(os.getcwd()) # convince yourself that you're in the right place
print(os.listdir(path)) # make sure the file is in here
myfile=open("hcl@hfs.dat.txt","r")
lines=myfile.readlines()

for x in lines:
    kH2.append(x.split(' ')[1])
    kHe.append(x.split(' ')[0])
myfile.close()
print kH2
print kHe

g = len(kH2)
f = len(kHe)
print g
print f

for n in range(0,7):
    C = (((math.log(float(kH2[n]),10)))-(math.log(float(kHe[n]),10)))/math.log(R,10)
    print C

然后返回此行,表示存在域错误。

C = (((math.log(float(kH2[n]),10)))-(math.log(float(kHe[n]),10)))/math.log(R,10)

ValueError: math domain error

此外,对于文本文件,我现在只是使用6个数字的随机列表,因为我想在我输入真正的数字列表之前让我的代码工作。我使用的数字是:

5 10 4 2
6 20 1 2
7 30 4 2
8 40 3 2
9 23 1 2
4 13 6 2

1 个答案:

答案 0 :(得分:0)

尝试检查日志中的值是否为正,因为日志函数的非正值是域错误。

希望这有帮助。