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

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

#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\n", 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\n", j);
	
	return 0;
}
发布了6 篇原创文章 · 获赞 0 · 访问量 35

猜你喜欢

转载自blog.csdn.net/Xue_fabulous/article/details/105125596