复数出错了
这是错误print(ecfc(1,0,1))
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
print(ecfc(1,0,1))
File "F:\yyfc.py", line 12, in ecfc
return (-b+sqrt(p*-1)*j)/a/2,(-b-sqrt(p*-1*j))/a/2
TypeError: can't convert complex to float
这是源码
def ycfc(a,b):
#一次方程
return -b/a
def ecfc(a,b,c):
#二次方程
from math import sqrt
p=b**2-4*a*c
if p>=0:
return (-b+sqrt(p))/a/2,(-b-sqrt(p))/a/2
else:
j=0+1j
return (-b+sqrt(p*-1)*j)/a/2,(-b-sqrt(p*-1*j))/a/2 本帖最后由 Twilight6 于 2020-7-26 10:41 编辑
math 库不支持复数运算的
改成这样吧:
def ycfc(a,b):
#一次方程
return -b/a
def ecfc(a,b,c):
#二次方程
p=b**2-4*a*c
if p>=0:
return (-b+sqrt(p))/a/2,(-b-sqrt(p))/a/2
else:
j=0+1j
return (-b+(p*-1)**0.5*j)/a/2,(-b-(p*-1*j)**0.5)/a/2
print(ecfc(1,0,1))
Twilight6 发表于 2020-7-26 10:40
math 库不支持复数运算的
改成这样吧:
我这是要求恒有解的一元二次方程,所以里面就必须要用到开根号,我的思路是这样的,如果里面是负数的话,那我就给他乘一个-1把它变成正数,再开根号再乘j,但是不知道怎么出错了,你那里面是什么?我还没看懂 革命年 发表于 2020-7-26 10:48
我这是要求恒有解的一元二次方程,所以里面就必须要用到开根号,我的思路是这样的,如果里面是负数的话, ...
**0.5 就是开根号啊, 二分之一次方
math 库不支持复数运算 所以不能用 sqrt 来求开根号的值
页:
[1]