作者tokyo291 (工口工口)
看板Statistics
標題[程式] 用R跑bisection找根
時間Wed Mar 7 17:52:56 2012
在學數值分析中,再練習bisection找根
我是使用R來跑的 以下是程式碼
#bisection
a1<-function(x){
x^10-1}
a1(0)*a1(3)
xl<-NULL ; xl[1]<-0
xu<-NULL ; xu[1]<-3
xr<-NULL
for(i in 1:10){
xr[i]<-(xl[i]+xu[i])/2
if(a1(xl[i])*a1(xr[i])<0){
xu[i+1]<-xr[i]
}
else{if(a1(xl[i])*a1(xr[i])>0){
xl[i+1]<-xr[i]
}
else{ break }
}
}
當我執行的時候會顯示出
錯誤在if (a1(xl[i]) * a1(xr[i]) < 0) { :
需要 TRUE/FALSE 值的地方有缺值
我有個別執行敘述中的指令 顯示出來是TRUE
有上網去查關於這個訊息的可能錯誤,好像是因為出現NA值
但是還是不知道是哪裡出了問題
有請大家的幫忙
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.175.102.81
1F:→ gsuper:當i=1時,xr[i] 等於 NULL , 所以if的括號內不是TRUE|FALSE 03/07 17:56
2F:→ gsuper:上面那句錯了 03/07 17:57
3F:→ gsuper:當你第一圈跑完後,你幫xu[2]新增了一個值,但xl[2]是空的 03/07 18:08
4F:→ gsuper:所以第二圈 , xr[2]<-(xl[2]+xu[2])/2 , xl[2] 是 NULL 03/07 18:09
5F:→ gsuper:導致 xr[2] 是 NA 03/07 18:09
6F:→ tokyo291:感謝!我再把這些地方改過 03/07 22:12