
用二分法求方程2x^3-4x^2+3x-6=0的根,要求误差小于10^(-5),用c语言中的函数求
2个回答
展开全部
#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);
}
}
#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);
}
}
展开全部
#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);}
#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的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询