c++求一元二次方程的根
时间: 2024-09-30 10:00:22 浏览: 62
在C++中,求解一元二次方程的一般形式是 \( ax^2 + bx + c = 0 \) 的根,可以使用公式法或者数值方法,如牛顿迭代法。这里我们简单介绍一种基于公式的方法。
**公式法**(也叫韦达定理):
给定方程的系数 a、b 和 c,其两个根 x1 和 x2 可以通过下面的公式计算:
\[ x_{1,2} = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
这是一个直接计算根的公式,不需要任何迭代过程。
以下是使用C++编写的一个函数示例:
```cpp
#include <iostream>
#include <cmath>
// 定义求解一元二次方程的函数
void solveQuadratic(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) { // 实数根
double root1 = (-b + std::sqrt(discriminant)) / (2 * a);
double root2 = (-b - std::sqrt(discriminant)) / (2 * a);
std::cout << "Roots are real and distinct: " << root1 << ", " << root2 << std::endl;
} else if (discriminant == 0) { // 单实数根
double root = -b / (2 * a);
std::cout << "Root is real and repeated: " << root << std::endl;
} else { // 复数根
double realPart = -b / (2 * a);
double imaginaryPart = std::sqrt(-discriminant) / (2 * a);
std::cout << "Roots are complex conjugates: " << realPart << " + " << imaginaryPart << "i, " << realPart << " - " << imaginaryPart << "i" << std::endl;
}
}
int main() {
double a, b, c; // 输入方程系数
std::cout << "Enter coefficients for the quadratic equation (ax^2 + bx + c): ";
std::cin >> a >> b >> c;
solveQuadratic(a, b, c);
return 0;
}
```
阅读全文