正经题解|一元三次方程求解
2024-03-22 11:14:26
发布于:浙江
47阅读
0回复
0点赞
由根与根之差的绝对值 这个条件,可以枚举每个长度为 的段,二分查找这一段中是否存在根。为了避免找到重复的根,每次我们是在 这个区间寻找根。
#include <iostream>
#include <algorithm>
using namespace std;
double a, b, c, d;
double f(double x) {
return a * x * x * x + b * x * x + c * x + d;
}
int main() {
cin >> a >> b >> c >> d;
for (int i = -100; i < 100; i++) {
if (f(i) == 0) {
printf("%.2f ", 1.0 * i);
}
if (f(i) * f(i + 1) < 0) {
double l = i, r = i + 1;
while (l + 1e-8 <= r) {
double mid = (l + r) / 2;
if (f(mid) * f(r) <= 0) {
l = mid;
}
else r = mid;
}
printf("%.2f ", (l + r) / 2);
}
}
if (f(100) == 0) {
printf("100.00 ");
}
return 0;
}
这里空空如也
有帮助,赞一个