用二分法求方程2x^3-4x^2+3x-6=0的根,要求误差小于10^(-5),用c语言中的函数求

最爱qfzhl
2011-04-14
知道答主
回答量:15
采纳率:0%
帮助的人:20.4万
展开全部
#include<stdio.h>
#include<math.h>
double f(double d)
{
return 2*pow(d,3)-4*d*d+3*d-6;
}
void main()
{
int k=0;double a,b,limit;
printf("\nplease input the 区间:");
scanf(""%lf %lf",&a,&b);
printf("\nplease input the 解的精确程度:");
scanf("%lf",&limit);
if(f(a)*f(b)>0)
printf("\n 无法用二分法求解");
else
{
while((b-a)>limit)
{
if((f(a+b)/2)*f(b)<0)//异号
a=(a+b)/2;
else //同号
b=(a+b)/2;
k++;
}

print("\n经历了%d次二分法求解\n",k);
}
}
寒末半前1x
2011-04-15 · TA获得超过409个赞
知道答主
回答量:61
采纳率:0%
帮助的人:43.3万
展开全部
#include<stdio.h>
#include <math.h>
double f(double x)
{return 2*x*x*x-4*x*x+3*x-6;}
double key(double a, double b,double l)
{ if(f(a)*f(b)>0)
printf("方程在该区域无解。");
else
while(fabs(f(a)-f(b))>l)
{if(f((a+b)/2)*f(b)<0)
a=(a+b)/2;
else
b=(a+b)/2;
}
return a;
}
int main()
{double k;
k=key(-10,10,0.00001);
printf("解为%f\n",k);}
更多追问追答
追问
我想问一下这个语句:
{return 2*x*x*x-4*x*x+3*x-6;}
double key(double a, double b,double l)
是什么意思?为什么在这有一个return语句呢?
while语句里是不是应该是fabs(f(a)*f(b))<0呢?
追答
double key(double a, double b,double l)是对key函数的定义,a,b,l是函数形参,return  后面的 是函数的返回值,另外,fabs(f(a)-f(b))指的是绝对值,是不可能小于0的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式