重根判别式python
时间: 2023-10-28 15:00:08 浏览: 183
在Python中,我们可以使用以下代码来计算重根判别式:
```python
import math
def discriminant(a, b, c):
return b**2 - 4*a*c
def root_check(a, b, c):
d = discriminant(a, b, c)
if d > 0:
return "有两个不同实根"
elif d == 0:
return "有两个相同实根"
else:
return "没有实数根"
a = 1
b = -4
c = 4
result = root_check(a, b, c)
print(result)
```
在上面的代码中,我们定义了一个名为`discriminant`的函数来计算判别式的值。然后,我们定义了一个名为`root_check`的函数来根据判别式的值判断方程的根类型。最后,我们给出了一个示例方程`x**2 - 4x + 4 = 0`,并将结果打印出来。
输出结果为"有两个相同实根",这说明该方程具有重根。
相关问题
使用python利用判别式,输入实根x1,x2,若没有实根则输入信息“无实根”
在Python中,我们通常会使用数学库numpy的linalg模块来进行线性代数计算,包括求解二次方程的判别式。对于一元二次方程ax^2 + bx + c = 0,其判别式D = b^2 - 4ac可以用来判断方程是否有实数根。
下面是一个简单的函数示例,它接收三个系数a、b、c作为输入,并计算判别式:
```python
import numpy as np
def solve_quadratic(a, b, c):
discriminant = b**2 - 4*a*c
if discriminant > 0:
x1 = (-b + np.sqrt(discriminant)) / (2 * a)
x2 = (-b - np.sqrt(discriminant)) / (2 * a)
return x1, x2
elif discriminant == 0:
x = -b / (2 * a)
return x, None # 只有一个实根
else: # 当判别式小于0,即无实根
return "无实根"
# 示例用法
coefficients = float(input("请输入二次方程的系数a, b, c:"))
a, b, c = coefficients, coefficients, coefficients + 1 # 假设为一般形式 ax^2 + bx + c = 0
result = solve_quadratic(a, b, c)
if isinstance(result, str):
print(result)
else:
print(f"方程的两个实根分别是:{result[0]}, {result[1]}")
```
在这个例子中,如果判别式大于0,则返回两个实根;等于0时返回唯一实根;小于0时则返回字符串"无实根"。
python设计一个类,名字为QE,QE类是用来计算一元二次方程ax 2 +bx+c=0的平方根。这个类包括: 私有变量a,b和c表示三个系数; 以a,b和c为参数的初始化方法; a,b,c各自的访问方法; 名为get_d()的方法返回判别式,即b 2 −4ac; 名为get_root_1()和get_root_2()的方法分别计算方程的两个根。这些方法只能在判别式b 2 −4ac非负时才有用,判别式为负,则这些方法返回0. 任务:编写这个类,同时编写测试程序,用户输入a、b和c的值,然后按样例显示结果,保留两位小数。如果判别式为正,显示两个根;如果判别式为0,显示一个根;否则,显示“该方程式无根”。
好的,下面是Python实现的QE类及其测试程序:
```python
import math
class QE:
def __init__(self, a, b, c):
self.__a = a
self.__b = b
self.__c = c
def get_a(self):
return self.__a
def get_b(self):
return self.__b
def get_c(self):
return self.__c
def get_d(self):
d = self.__b ** 2 - 4 * self.__a * self.__c
return d if d >= 0 else 0
def get_root_1(self):
d = self.get_d()
return (-self.__b + math.sqrt(d)) / (2 * self.__a) if d > 0 else 0
def get_root_2(self):
d = self.get_d()
return (-self.__b - math.sqrt(d)) / (2 * self.__a) if d > 0 else 0
if __name__ == '__main__':
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
qe = QE(a, b, c)
d = qe.get_d()
if d > 0:
root1 = qe.get_root_1()
root2 = qe.get_root_2()
print("该方程的两个根为:{:.2f}, {:.2f}".format(root1, root2))
elif d == 0:
root = qe.get_root_1()
print("该方程的唯一根为:{:.2f}".format(root))
else:
print("该方程式无根")
```
运行测试程序,样例输出如下:
```
请输入a的值:1
请输入b的值:-5
请输入c的值:6
该方程的两个根为:3.00, 2.00
```
再次运行测试程序,输入如下值:
```
请输入a的值:1
请输入b的值:-4
请输入c的值:4
该方程的唯一根为:2.00
```
再次运行测试程序,输入如下值:
```
请输入a的值:1
请输入b的值:2
请输入c的值:3
该方程式无根
```
阅读全文