一元三次方程

 1 #include<cstdio>
 2 #define zx author
 3 using namespace std;
 4 double a,b,c,d;
 5 double f(double x)
 6 {
 7     return a * x * x * x + b * x * x + c * x + d;
 8 }
 9 void erfen(double l,double r)
10 {
11     double mid = (l + r) / 2;
12     
13     if(r - l <= 0.01)
14     {
15         if(f(l) * f(r) < 0)
16         {
17         
18             printf("%.2lf ",mid);
19         }
20         return;
21     }
22         erfen(l,mid);
23         erfen(mid,r);
24 
25 }
26 int main()
27 {
28     freopen("equation.in","r",stdin);
29     freopen("equation.out","w",stdout);
30     scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
31     erfen(-100,100);
32     return 0;
33 }

*****二分每一段寻找答案,根据提示,找到小于0的区间就可以继续搜索啦。

一元三次方程求解

Equation.pas/cpp

题目描述:

形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的

系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100

至100 之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这

三个实根(根与根之间留有空格),并精确到小数点后4 位。

提示:记方程f(x)=ax3+bx2+cx+d,若存在2 个数x1 和x2,且x1<x2,

f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个根。

扫描二维码关注公众号,回复: 1028065 查看本文章

输入格式:

一行四个实数a,b,c,d

输出格式:

从小到大输出三个根,每个根保留两位小数,中间用空格隔开。

样例:

输入:1 -5 -4 20

输出:-2.00 2.00 5.00

猜你喜欢

转载自www.cnblogs.com/rax-/p/9090222.html