2016-10-11 5 views
0

Ich arbeite derzeit an einem Code, um einen Wert C zu finden, die ich dann mit anderen Parametern vergleichen werde. Wenn ich versuche, meinen Code auszuführen, erhalte ich jedoch diesen Fehler: ValueError: Math-Domänenfehler. Ich bin mir nicht sicher, warum ich diesen Fehler erhalte, obwohl ich denke, dass ich so meine Gleichung einstelle. Vielleicht gibt es einen besseren Weg, es zu schreiben. Das ist mein Code:ValueError: Math Domain Fehler bei der Verwendung Logarithmen

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("[email protected]","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 

Es gibt dann diese Zeile zurück, die besagt, dass es einen Domänenfehler gibt.

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

ValueError: math domain error 

Auch für die Textdatei, verwende ich nur eine zufällige Liste von 6 Zahlen für jetzt, da ich meinen Code Ich versuche zu arbeiten, bevor ich die reale Liste von Zahlen setzen in. Die Zahlen, die ich verwende, ist: als nicht-positiver Wert in eine Log-Funktion eine Domäne Fehler

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

Debugging-Tipp - brechen Sie Ihre komplizierte Zeile in Stücke, bis Sie den Fehler isolieren. – enderland

+0

Ich vermute, dass Sie Python 2 verwenden. Wenn ja, dann wird 'R' 0. Ändern Sie' R = ((uH2 * eH2)/(uHe * eHe)) 'zu' R = float (uH2 * eH2)/(Uh * eHe) '. Sehen Sie zum Beispiel [diese Frage] (http://stackoverflow.com/questions/2958684/python-division) für Details. –

+0

Warren scheint jetzt mit Ihrem Vorschlag zu arbeiten. Danke für deinen Rat. Danke auch für deinen Rat enderland. – Cosmoman

Antwort

0

versuchen, wenn der Wert innerhalb des Protokolls zu überprüfen positiv ist.

Hoffe, das hilft.

Verwandte Themen