作者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
→ QQ29:加點解釋吧 不然鎖文定了 10/28 00:26
推 VictorTom:float t = 1/100000; 結果不是0.000001, 而是0.... 10/28 00:36
→ VictorTom:因為兩個整數做除法只會除出整數....:) 10/28 00:36
→ VictorTom:總覺得這點最近也是出現很多次XD 10/28 00:37
→ nowar100:Q大這麼講,豈不是讓我很難做人 XD 10/28 00:46
→ nowar100:我是覺得這篇還好啦,有努力過,也大概看得出來在問什麼 10/28 00:48
推 dendrobium:其實我覺得應該強制規定要用問題規格 10/28 00:48
→ nowar100:我也希望大家能照規格發文,但是又怕太過強硬,大家一時 10/28 00:53
→ nowar100:接受不能,我再觀察看看吧,不然我是感覺格式統一比較好 10/28 00:53
→ tiyun:會把人嚇跑@@ 10/28 00:56
推 QQ29:sorry= = 我只是覺得把整個code貼上沒解釋 真的很難去想幫忙 10/28 00:56
→ nowar100:XD 不過在人家文章下這樣推文好像不太尊重,原po抱歉 10/28 00:58
→ nowar100:以後有任何意見都歡迎站內信或推置底文喔 :D 10/28 00:59