作者moon2519 (~辉~)
看板C_and_CPP
标题[问题] 请益二分法与牛顿法...
时间Wed Oct 28 00:25:24 2009
Dev-C++
------------二分法-------------------------
float term;
float a=-1 ,b=0 ,t=1/100000 ,N;
float p , q ,temp ,FA ,FP;
cin >> N;
term = (230*a*a*a*a) + (18*a*a*a) + (9*a*a) - (211*a) -9;
FA=term;
for(int i=1; i <= N ; i++){
p = a+((b-a)/2);
FP=(230*p*p*p*p) + (18*p*p*p) + (9*p*p) - (211*p) -9;
cout<<"term :"<<FA<<endl;
cout<<"temp :"<<FP<<endl;
cout<<"temp*term :"<<FP*FA<<endl;
if( FP==0||((b-a)/2)<t){
cout<<"p = "<<p<<endl;
cout<<"FP = "<<FP<<endl;
break;
}
if((FP*FA)>0){
a=p;
FA=FP;
}
if((FP*FA)<0){
b=p;
}
}
------------牛顿法-------------------------
float t=1/1000000,p0=0,p=-1,N0,sign;
cin>>N0;
for(int i=1; i<=N0; i++){
p=p0-((230*p0*p0*p0*p0)+(18*p0*p0*p0)+(9*p0*p0)-(211*p0)-9)/((920*p0*p0*p0)+(54*p0*p0)-211);
sign=(p-p0);
if(sign<=0){
sign=(-1)*sign;
}
if(sign<=t){
cout<<p<<endl;
}
p0=p;
}
--
两个都是要跑出" 230x^4 + 18x^3 + 9x^2 - 211x - 9 = 0 "
之x的根...范围是〔0,1〕
...程式都能跑!但跑出来都是错的ˊˋ...
有请伟大的ptt之神解救小弟,指点迷津T^T...
感激不尽~谢谢...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.221.26
1F:→ QQ29:加点解释吧 不然锁文定了 10/28 00:26
2F:推 VictorTom:float t = 1/100000; 结果不是0.000001, 而是0.... 10/28 00:36
3F:→ VictorTom:因为两个整数做除法只会除出整数....:) 10/28 00:36
4F:→ VictorTom:总觉得这点最近也是出现很多次XD 10/28 00:37
5F:→ nowar100:Q大这麽讲,岂不是让我很难做人 XD 10/28 00:46
6F:→ nowar100:我是觉得这篇还好啦,有努力过,也大概看得出来在问什麽 10/28 00:48
7F:推 dendrobium:其实我觉得应该强制规定要用问题规格 10/28 00:48
8F:→ nowar100:我也希望大家能照规格发文,但是又怕太过强硬,大家一时 10/28 00:53
9F:→ nowar100:接受不能,我再观察看看吧,不然我是感觉格式统一比较好 10/28 00:53
10F:→ tiyun:会把人吓跑@@ 10/28 00:56
11F:推 QQ29:sorry= = 我只是觉得把整个code贴上没解释 真的很难去想帮忙 10/28 00:56
12F:→ nowar100:XD 不过在人家文章下这样推文好像不太尊重,原po抱歉 10/28 00:58
13F:→ nowar100:以後有任何意见都欢迎站内信或推置底文喔 :D 10/28 00:59