高手 查一下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\数学建模\数学建模\二分法求
运行后有问题呀
#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>