C++解一元二次方程的复数根
时间: 2024-10-17 19:01:50 浏览: 47
c++解一元二次方程(含代码
在C++中,解决一元二次方程(一般形式为ax^2 + bx + c = 0)包括求解实数根和复数根。对于实数根,可以使用公式`x = [-b ± sqrt(b² - 4ac)] / (2a)`;而对于复数根,则涉及到虚部的存在,即当判别式`D = b² - 4ac`小于零时。
处理复数根需要引入复数运算,C++标准库并没有内置的复数数据类型,但你可以自定义一个`Complex`类来代表复数,包含实部和虚部两个成员变量。计算复数根通常会使用到复数乘法、除法和平方根等操作。
下面是一个简单的示例,假设我们有一个`Complex`类:
```cpp
#include <cmath>
class Complex {
public:
double real, imag;
// 构造函数、加减乘除等方法省略...
Complex quadraticRoot(double a, double b, double c) const {
double discriminant = b * b - 4 * a * c;
if (discriminant >= 0) {
return Complex{-b + sqrt(discriminant), 0}; // 实数根
} else {
double r = -b / (2 * a);
double s = sqrt(-discriminant) / (2 * a);
return Complex{r, s}, Complex{r, -s}; // 对称的复数根
}
}
};
// 使用示例
int main() {
Complex c = Complex{1, 0};
auto roots = c.quadraticRoot(1, -3, 2); // 例如解 x^2 - 3x + 2 = 0
for (const auto& root : roots) {
std::cout << "Root: (" << root.real << ", " << root.imag << "i)\n";
}
return 0;
}
```
阅读全文