import math as m a,b,c=int(),int(),int() if a==0 or b**2-4*a*c: print("输入错误") else: x1,y1=0,0 x2,y2=0,0 y1=(m.sqrt(b**2-4*a*c)/(2*a)) y2=(-m.sqrt(b**2-4*a*c)/(2*a)) x1=(-b)/(2*a) x2=(-b)/(2*a) print("{:.2f}+{:.2f}i".format(x1 ,y1 )) print("{:.2f}+{:.2f}i".format(x2 ,y2 ))
时间: 2023-12-16 07:04:13 浏览: 67
这段代码可以求解一元二次方程的根,但是代码中存在一个问题。
在判断二次方程的判别式是否小于 0 时,应该使用 b**2-4*a*c < 0,而不是 b**2-4*a*c。因为后者的值可能为 0 或 True,这样会导致程序误判二次方程无解。因此,需要将判定条件修改为 b**2-4*a*c < 0。
修改后的代码如下所示:
```
import math as m
a, b, c = 1, 2, -3
if a == 0 or b**2 - 4*a*c < 0:
print("输入错误")
else:
x1, y1 = 0, 0
x2, y2 = 0, 0
y1 = (m.sqrt(b**2 - 4*a*c) / (2*a))
y2 = (-m.sqrt(b**2 - 4*a*c) / (2*a))
x1 = (-b) / (2*a)
x2 = (-b) / (2*a)
print("{:.2f}+{:.2f}i".format(x1, y1))
print("{:.2f}+{:.2f}i".format(x2, y2))
```
给定的方程为 x^2 + 2x - 3 = 0,它的解为 x1 = -1 + sqrt(4+12)/2 = -1 + sqrt(16)/2 = -1 + 2 = 1 和 x2 = -1 - sqrt(4+12)/2 = -1 - sqrt(16)/2 = -1 - 2 = -3,其中 sqrt(-8) = sqrt(8)i = 2sqrt(2)i。因此,程序的输出应该为:
```
-1.00+1.41i
-1.00-1.41i
```
阅读全文