繁体   English   中英

将负数变为虚数

[英]turn negative number to imaginary

我正在制作一个可以计算二次方程式分辨率的程序。 当判别式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

您正在尝试使用某个函数的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)的平方根,将其另存为虚部,然后分别计算实部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM