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; }