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

并约定该方程存在三个不同实根(根的范围在-100至100之间),且根于根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根于根之间留有空格),并精确到小数点后... 并约定该方程存在三个不同实根(根的范围在-100至100之间),且根于根之差的绝对值>=1。 要求由小到大依次在同一行输出这三个实根(根于根之间留有空格),并精确到小数点后2位,给出实现思想和流程图,希望好心人帮帮忙,不盛感谢,用C语言编写啊 展开
 我来答
Is_it_right
2007-07-27 · TA获得超过1031个赞
知道小有建树答主
回答量:410
采纳率:0%
帮助的人:405万
展开全部
我来解释一下楼上的吧!
首先,对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个根。
晨之子
2007-07-26 · TA获得超过979个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:0
展开全部
#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("%.2lf %.2lf %.2lf\n",find_sol(-101,x1),find_sol(x1,x2),find_sol(x2,101));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecdb665bf
2007-07-26 · TA获得超过199个赞
知道小有建树答主
回答量:385
采纳率:0%
帮助的人:0
展开全部
解一元三次方程有通解的,到baidu找找
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chrisfreeman
2007-08-10 · TA获得超过200个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:0
展开全部
找到求解公式,剩下的就是一个表达式问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式