1.一元二次型方程的求解是数学中的常见问题,其中一种求解方法是“公式法”。在此次实验中,分别利用面向过程与面向对象的思路去求解一元二次型方程的实数根。具体要求如下:公式法求解一元二次型方程主要分为三步, (1)判断是否为一元二次方程;(2)判断是否有实数根;(3)公式法求解实根。 面向过程:编写3个函数,求解一元二次型方程的实根,若不满足一元二次方程的条件或无法求出实根,则输出原因; 面向对象:编写一个一元二次型方程的类,并将上述三个功能作为成员函数,求解一元二次型方程的实根,若不满足一元二次方程的条件或无法求出实根,则输出原因。
时间: 2023-06-14 22:03:15 浏览: 168
面向过程的实现:
```python
import math
def is_quadratic_equation(a, b, c):
if a == 0:
return False
return True
def has_real_roots(a, b, c):
delta = b * b - 4 * a * c
if delta < 0:
return False
return True
def solve_quadratic_equation(a, b, c):
delta = b * b - 4 * a * c
if delta < 0:
return None
elif delta == 0:
return -b / (2 * a)
else:
x1 = (-b + math.sqrt(delta)) / (2 * a)
x2 = (-b - math.sqrt(delta)) / (2 * a)
return x1, x2
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
if not is_quadratic_equation(a, b, c):
print("不是一元二次方程")
elif not has_real_roots(a, b, c):
print("无实数根")
else:
roots = solve_quadratic_equation(a, b, c)
if roots is not None:
print(f"实根为:{roots}")
else:
print("无实数根")
```
面向对象的实现:
```python
import math
class QuadraticEquation:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def is_quadratic_equation(self):
if self.a == 0:
return False
return True
def has_real_roots(self):
delta = self.b * self.b - 4 * self.a * self.c
if delta < 0:
return False
return True
def solve_quadratic_equation(self):
delta = self.b * self.b - 4 * self.a * self.c
if delta < 0:
return None
elif delta == 0:
return -self.b / (2 * self.a)
else:
x1 = (-self.b + math.sqrt(delta)) / (2 * self.a)
x2 = (-self.b - math.sqrt(delta)) / (2 * self.a)
return x1, x2
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
equation = QuadraticEquation(a, b, c)
if not equation.is_quadratic_equation():
print("不是一元二次方程")
elif not equation.has_real_roots():
print("无实数根")
else:
roots = equation.solve_quadratic_equation()
if roots is not None:
print(f"实根为:{roots}")
else:
print("无实数根")
```
两种实现的结果是一样的,但是面向对象的实现更加清晰和易于维护。在面向对象的实现中,我们将求解一元二次型方程的三个功能封装成了类的三个成员函数,使得代码更加模块化,易于扩展和维护。
阅读全文