问题
I'm very new to python programming and to this site. I'm currently working on a problem and can't seem to understand the error.
import math
# Problem number 5.
A5 = 5
B5 = 0
C5 = 6.5
# Root1
x9 = (-B5 + math.sqrt(B5**2 - 4*A5*C5))/(2*A5)
# Root2
x10 = (-B5 + math.sqrt(B5**2 - 4*A5*C5))/(2*A5)
# Print solution
print()
print('Problem #5')
print('Root 1: ',x9)
print('Root 2: ',x10)
I get this after i run it:
x9 = (-B5 + math.sqrt(B5**2 - 4*A5*C5))/(2*A5)
ValueError: math domain error
I did the problem on paper and got an answer for both...
回答1:
If you got an answer, it must have been a complex number (which are not included by default in Python). Look at the line math.sqrt(B5**2 - 4*A5*C5)
.
This evaluates as so:
math.sqrt(B5**2 - 4*A5*C5)
math.sqrt(0**2 - 4*5*6.5)
math.sqrt(0 - 130)
math.sqrt(-130)
The function math.sqrt
doesn't find complex roots. You should use cmath.sqrt
instead, as that does (this will require import
ing cmath
at the start of your program).
Using cmath
, I get this result:
Problem #5
Root 1: 1.1401754250991378j
Root 2: 1.1401754250991378j
(where j
is the square root of -1).
来源:https://stackoverflow.com/questions/28232673/valueerror-math-domain-error-quadratic-equation-python