c++求解多项式方程的所有解
时间: 2023-08-30 16:06:04 浏览: 248
多项式求解
4星 · 用户满意度95%
要求解一个多项式方程的所有解,可以使用牛顿迭代法或者试位法。以下是一个使用试位法的示例代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
double func(double x)
{
return x * x - 4 * x + 3; // 要求解的多项式方程
}
double solve(double a, double b, double eps)
{
double c = (a + b) / 2;
while (fabs(func(c)) > eps)
{
if (func(a) * func(c) < 0)
b = c;
else
a = c;
c = (a + b) / 2;
}
return c;
}
int main()
{
double a, b, eps;
cout << "请输入多项式方程的解区间[a, b]和精度eps:";
cin >> a >> b >> eps;
int cnt = 0;
double x = a;
while (x < b)
{
if (func(x) * func(x + eps) < 0)
{
cnt++;
double root = solve(x, x + eps, eps);
cout << "解" << cnt << ":" << root << endl;
}
x += eps;
}
return 0;
}
```
该代码中的 `func` 函数为要求解的多项式方程,`solve` 函数使用二分法求解给定区间内的一个根,`main` 函数则遍历解区间,当函数值在相邻两点处异号时,调用 `solve` 函数求解该区间内的根,并输出。
阅读全文