C语言——二分法求一元三次方程的方程根——更新1

C语言——二分法求一元三次方程的方程根——更新1

题目要求:

在这里插入图片描述

#include <stdio.h>

#include <math.h>

int main()
{
	double a = -10;
	double b = 10;
	double c;
	double f1, f2, f3;
	
	do
	{
		f1 = 2*pow(a, 3) - 4*pow(a, 2) + 3*a - 6;  //  得出左端项的值f1
		f2 = 2*pow(b, 3) - 4*pow(b, 2) + 3*b - 6;  //  得出右端项的值f2
		if (f1*f2 < 0)  //  该条件成立说明该区间内有解
		{
			c = (a + b)/2;  //  二分法取中间值
			f3 =  2*pow(c, 3) - 4*pow(c, 2) + 3*c - 6;  
			if (f1*f3 < 0)  //  说明左端项和中间项有解
			{
				b = c;
			}
			else  //  说明右端项和中间项有解
			{
				a = c;
			}
		}
		else
		{
			printf("该方程在此区间内无解!");
		}
	}
	while (fabs(f3) > 1e-6);
	printf("该方程在该区间内解为:%lf\n", c);
	
	return 0;
}

你可能感兴趣的:(C语言——二分法求一元三次方程的方程根——更新1)