高手 查一下C++2008 二分法求零点 的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 00:19:36
这里是自己从网上找的,有点改变的程序,
运行后有问题呀
#include <iostream>
#include <stdio.h>
#include <math.h>
#define null 0
double fx(double); //fx函数
void main()
{
double xa(null),xb(null),xc(null);
do
{
printf("请输入一个范围x0 x1:");
std::cin>>xa>>xb; //输入xa xb的值
printf("%f %f",xa,xb);
}
while(fx(xa)*fx(xb)>=0);//判断输入范围内是否包含函数值0

do
{
if(fx((xc=(xa+xb)/2))*fx(xb)<0)//二分法判断函数值包含0的X取值区间
{
xa=xc;
}
else
{
xb=xc;
}
}
while(fx(xc)>1e-5||fx(xc)<-1e-5);//判断x根是否在接近函数值0的精确范围内

printf("\n 得数为:%f",xc);
}
dobule fx(double x)
{
return(2.0*pow(x,3)-4.0*pow(x,2)+3.0*x-6.0);
}

运行后的反应为
1>------ 已启动生成: 项目: 数学建模, 配置: Debug Win32 ------
1>正在编译...
1>二分法求零点.cpp
1>d:\study\数学建模\数学建模\二分法求

dobule fx(double x) //就double 写错了而已
{
return(2.0*pow(x,3)-4.0*pow(x,2)+3.0*x-6.0);
}

//欢迎在线讨论
#include <iostream>
#include <stdio.h>
#include <math.h>
#define null 0

double fx(double x)
{
return(2.0*pow(x,3)-4.0*pow(x,2)+3.0*x-6.0);
}

void main()
{
double xa(null),xb(null),xc(null);
do
{
printf("请输入一个范围x0 x1:");
std::cin>>xa>>xb; //输入xa xb的值
printf("%f %f",xa,xb);
}
while(fx(xa)*fx(xb)>=0);//判断输入范围内是否包含函数值0

do
{
if(fx((xc=(xa+xb)/2))*fx(xb)<0)//二分法判断函数值包含0的X取值区间
{
xa=xc;
}
else
{
xb=xc;
}
}
while(fx(xc)>1e-5||fx(xc)<-1e-5);//判断x根是否在接近函数值0的精确范围内

printf("\n 得数为:%f",xc);
}

#include <iostream>
#include <stdio.h>