C言語——二分法は1元の3次方程式の方程式のルートを求めます
7882 ワード
C言語——二分法は1元の3次方程式の方程式のルートを求めます
#include <stdio.h>
#include <math.h>
int main()
{
double m, n;
double i , j, sum;
double eps = 1e-6;
double a, b, c, d;
double f1, f2;
scanf("%lf%lf%lf%lf", &a, &b, &c, &d);
scanf("%lf%lf", &m, &n);
f1 = a*pow(m, 3) + b*pow(m, 2) +c*m +d;
f2 = a*pow(n, 3) + b*pow(n, 2) +c*n +d;
if (f1*f2 < 0)
{
while (fabs(m - n) > eps)
{
i = (m + n)/2;
sum = a*pow(i, 3) + b*pow(i, 2) +c*i +d;
if (fabs(sum) < eps)
{
printf(" x* = %lf
", i);
break;
}
else if (sum*f2 < 0)
{
m = i;
}
else if (f1*sum < 0)
{
n = i;
}
}
}
else
{
printf(" !");
}
j = (m + n)/2;
printf(" x* = %lf
", j);
return 0;
}