有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出改方程中各项的系数(a,b,c,d 均为实数),

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:42:55
并约定该方程存在三个不同实根(根的范围在-100至100之间),且根于根之差的绝对值>=1。 要求由小到大依次在同一行输出这三个实根(根于根之间留有空格),并精确到小数点后2位,给出实现思想和流程图,希望好心人帮帮忙,不盛感谢,用C语言编写啊

我来解释一下楼上的吧!
首先,对f(x)=ax3+bx2+cx+d求导(别告诉我说你没学过高数哦),得f'(x)=3ax2+2bx+c。
然后解方程f'(x)=0,得到两个实根x1、x2,也就是f(x)的极值点。f(x)=0的3个根应在区间[-100,x1]、[x1,x2]、[x2,100]中。
用二分法,即可求出f(x)=0的3个根。

#include <stdio.h>
#include <math.h>
#define MIN_ERR 1e-4
double a,b,c,d;
double f(double x)
{
return a*x*x*x+b*x*x+c*x+d;
}

double find_sol(double min,double max)
{
if (max-min<MIN_ERR) return (min+max)/2;
else
{
double f1,f2,f3;
f1=f(min);
f2=f((min+max)/2);
f3=f(max);
if (f2==0) return (min+max)/2;
else if (f1*f2<0) return find_sol(min,(min+max)/2);
else return find_sol((min+max)/2,max);
}
}

main()
{
double x1,x2;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
if (a<0)
{
a=-a;
b=-b;
c=-c;
d=-d;
}
x1=(-2*b-sqrt(4*b*b-12*a*c))/(a*6);
x2=(-2*b+sqrt(4*b*b-12*a*c))/(a*6);
printf("%.

有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出改方程中各项的系数(a,b,c,d 均为实数), 设AX3+BX2+CX+D都被X2+H2(H≠0)整除,则A,B,C,D间的关系为: 设函数f(x)=ax3-2bx2+cx+4d (a、b、c、d∈R)图象关于原点对称,且x=1时,f(x)取极小值 解方程 ax2+bx+c=bx2+cx+a(a不等于b) 已知定义在R上的函数f(x)=-2x3+bx2+cx。 已知:f(x)=ax3次方+cx+5,满足f(-3)= -3,则f(3)的值为 已知a、b、c三数满足方程组,a+b=8, ab-c的平方+8倍根号2c=48.试求方程bx2+cx—a=0的根 已知实数abc≠0,且三个一元二次方程ax2+bx+c=0,bx2+cx+a=0,cx2+ax+b=0有公共根.则a2/bc+b2/ca+c2/ab=( ). 为什么只有形如3K,3K+1的平方数,而没有形如3K+2的平方数 文献中作者名如A. G. Shaper、Springer-Verlag、还有形如Shaper A.G的,能否详细解说一下外国人名的问题?