0
点赞
收藏
分享

微信扫一扫

求解一元三次方程(c语言)


求解一元三次方程

  • ​​描述​​
  • ​​格式​​
  • ​​样例​​
  • ​​题解及注释​​


求解一元三次方程(c语言)_数据结构

描述

格式

样例

题解及注释

是数学的最小二分法

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
double m, n;
double i , j, sum;
double eps = 1e-7;//eps是精度控制,此处为10^-7
double a, b, c, d;
double f1, f2;

int r;
scanf("%lf%lf%lf%lf", &a, &b, &c, &d);//四个常数
scanf("%lf%lf", &m, &n);//注意abcdmn都是%lf而不是%d
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)//pow(x,y)=x^y,幂函数
{
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("%lf\n", i);
return 0;
}
else if (sum*f2 < 0)
{
m = i;
}
else if (f1*sum < 0)
{
n = i;
}
}
}
//如果刚好区间取值为方程解
else if(f1*f2==0)
{
if(f1==0)
{
printf("%lf\n",m);
return 0;
}
if(f2==0)
{
printf("%lf\n",n);
return 0;
}
}
j = (m + n)/2;
printf("%lf\n", j);
}

求解一元三次方程(c语言)_c语言_02


写于2021年7月22日11:45分。


举报

相关推荐

0 条评论