编写求根函数:键盘输入一元二次方程ax2+bx+C=0的三个系数a、b、C(假设a不为0,且测试数据保证有实根)。 函数接口定义: 1 getRoot (a, b, c) 2 其中a、b、c是用户传入的参数。函数返回方程的根,其中大的在前,小的在后
时间: 2024-09-12 10:08:14 浏览: 48
在Python中,你可以编写一个名为`getRoot`的函数,采用牛顿迭代法来逼近一元二次方程的实根。牛顿迭代法是一种常用的数值方法,对于一元二次方程特别有效。以下是实现这个函数的一个示例:
```python
def getRoot(a, b, c):
# 检查是否满足二次方程条件
assert a != 0, "Coefficient 'a' cannot be zero"
# 定义辅助函数 f(x) = ax^2 + bx + c
def quadratic_function(x):
return a * x**2 + b * x + c
# 牛顿迭代公式:x_new = x_old - f(x_old) / f'(x_old)
def newton_raphson(x):
return x - quadratic_function(x) / (2 * a)
# 初始化一个初始近似值
x0 = (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)
# 确保根的顺序:较大的根在前
root1 = max(newton_raphson(x0), -b / (2 * a))
root2 = min(newton_raphson(x0), -b / (2 * a))
return round(root1, 5), round(root2, 5)
# 示例使用
a, b, c = float(input("Enter coefficient a: ")), float(input("Enter coefficient b: ")), float(input("Enter constant c: "))
result = getRoot(a, b, c)
print(f"The roots are {result[0]} and {result[1]}")
```
在这个示例中,我们首先检查`a`是否为0,然后定义了一个辅助函数来计算方程。接下来,我们使用牛顿迭代法找到两个根,并按照题目要求确保较大的根在前返回。
阅读全文