解方程:f(x) : 8*pow(x, 4) + 7*pow(x, 3) + 2*pow(x, 2) + 3*x + 6 = Y。
二分精度查找,注意No solution的情况,f(0) < Y && f(100) > Y。
#include <stdio.h>
double pow(double x, int m) {
double sum = 1;
for(int i = 0; i < m; i++) {
sum *= x;
}
return sum;
}
double f(double x) {
return 8*pow(x, 4) + 7*pow(x, 3) + 2*pow(x, 2) + 3*x + 6;
}
int main() {
int N;
int Y;
scanf("%d", &N);
while(N--) {
scanf("%d", &Y);
if(f(0) > Y || f(100) < Y) {
puts("No solution!");
continue;
}
double l = 0, r = 100, m;
while(r-l > 1e-9) {
m = (r+l)/2;
if(f(m) > Y) r = m;
else l = m;
}
printf("%.4lf\n", m);
}
return 0;
}
本文介绍了一个使用二分法查找特定精度下多项式方程解的C语言程序实现。该程序能有效处理形如8x^4 + 7x^3 + 2x^2 + 3x + 6 = Y的方程,并考虑了无解情况。通过不断缩小搜索范围直至达到所需精度来定位解。
636

被折叠的 条评论
为什么被折叠?



