二分法求根,出现什么问题啦

zzcwyu 2008-10-31 08:54:15


#include <iostream>
#include <cmath>
using namespace std;
double f(double a){
double y=exp(a)+10*a-2;
return y;
}
int main(){
int n,i=0;
double a,b,e1,e2,x;
cout<<"please input a,b,e1,e2,n;"<<endl;
cin>>a>>b>>e1>>e2>>n;
double y1=f(a);
double y2=f(b);

if(y1*y2>0) cout<<"fail to get the answer:"<<endl;
else{
do{
x=(a+b)/2;
if(f(x)<e1)
{
cout<<i+1<<" "<<x<<" "<<f(x)<<endl;
break;
}
else{
if(y1*f(x)<0) {
b=x;
y2=f(x);
i++;
}
else {
a=x;
y1=f(x);
i++;
}
}
cout<<i<<" "<<x<<" "<<f(x)<<endl;
}while(abs(b-a)>e2);
}return 0;
}



如题
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzcwyu 2008-11-03
  • 打赏
  • 举报
回复
abs与fabs的不同啊
zzcwyu 2008-11-01
  • 打赏
  • 举报
回复
汗,难道这样说是编译器的问题
langhua0001 2008-10-31
  • 打赏
  • 举报
回复


#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
double f(double a)
{
double y = exp(a)+10*a-2;
return y;
}
int main()
{
int n,i=0;
double a,b,e1,e2,x;
cout <<"please input a,b,e1,e2,n;" <<endl;
cin>>a>>b>>e1>>e2>>n;
double y1=f(a);
double y2=f(b);

if(y1*y2>0)
cout <<"fail to get the answer:" <<endl;
else
{
do
{
x=(a+b)/2;
if(fabs(f(x)) <e1 )
{
cout <<i+1 <<" " <<x <<" " <<f(x) <<endl;
break;
}
else
{
if(y1*f(x) <0)
{
b=x;
y2=f(x);
i++;
}
else
{
a=x;
y1=f(x);
i++;
}
}
cout <<i <<" " <<x <<" " <<f(x) <<endl;
}while(abs(b-a)>e2);
}
system("pause");
return 0;
}

没问题的

另外想问楼主一下n起什么作用了...

zzzlll1983 2008-10-31
  • 打赏
  • 举报
回复
??
zzcwyu 2008-10-31
  • 打赏
  • 举报
回复
还是不行,执行结果还是
输入:0.0 1.0 0001 0.0001 9
输出只有:1 0.5 4.64872:
langhua0001 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 zzcwyu 的帖子:]


#include <iostream>
#include <cmath>
using namespace std;
double f(double a){
double y=exp(a)+10*a-2;
return y;
}
int main(){
int n,i=0;
double a,b,e1,e2,x;
cout < <"please input a,b,e1,e2,n;" < <endl;
cin>>a>>b>>e1>>e2>>n;
double y1=f(a);
double y2=f(b);

if(y1*y2>0) cout < <"fail to get the answer:" < <endl;
else{
do{
x=(a+b)/2;
if(f(x) <e1) 改为 :if(fabs(f(x))<e1) 要取绝对值
{
cout …
[/Quote]
langhua0001 2008-10-31
  • 打赏
  • 举报
回复
输入
0.0
1.0
0.001
0.0001
9

你要是再说不对,那我就无语了

DEV-C++ C++BUILDER 都可以正常输出
zzcwyu 2008-10-31
  • 打赏
  • 举报
回复
我也查不出问题,但结果就是不对,n是题目要求

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧