将负数转为虚数

时间:2017-06-15 22:21:59

标签: python math

我正在制作一个可以计算二次方程分辨率的程序。当判别式d是非负的,但不适用于复杂的根时,这种方法有效。

如何插入虚构的平方根?

import math
a = input("insert the value of a: ")
b = input("insert the value of b: ")
c = input("insert the value of c: ")
def d(a,b,c) : return (b**2)-(4.*a*c)
def x1(d,a,b,c) : return (b-(2.*b))+(math.sqrt ( d ))/2.*a
def x2(d,a,b,c) : return (b-(2.*b))-(math.sqrt ( d ))/2.*a
print ("the values of D,X' e X'' respectively: ")
print (d(a,b,c),x1(d,a,b,c),x2(d,a,b,c))

此外,当我使用a=4 b=4 c=1d将成为0时,我收到以下错误。我不确定这里有什么问题。

    Traceback (most recent call last):
  File "H:/Python27/equation2.py", line 9, in <module>
    print (d(a,b,c),x1(d,a,b,c),x2(d,a,b,c))
  File "H:/Python27/equation2.py", line 6, in x1
    def x1(d,a,b,c) : return (b-(2.*b))+(math.sqrt ( d ))/2.*a
TypeError: a float is required

1 个答案:

答案 0 :(得分:4)

您正在尝试使用函数的sqrt。函数名称​​不会自动表示最近一次调用的结果。尝试一个临时变量:

d_result = d(a,b,c)
print (d_result, x1(d_result,a,b,c), x2(d_result,a,b,c))

这只修复了致命错误;眼前的问题仍然是你不能处理复杂的根源。 注意:对于您的给定案例a = b = c = 4,判别式为-48, 0,作为您的过帐状态。

在这里,您有两门课程:

  1. 阅读有关Python中可用的复数的文档
  2. 自己编写复杂的部分:取abs(d_result)的sqrt,将其保存为虚部,并分别计算实部。