[程式] 用R跑bisection找根

看板Statistics作者 (工口工口)時間12年前 (2012/03/07 17:52), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
在學數值分析中,再練習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

03/07 17:56, , 1F
當i=1時,xr[i] 等於 NULL , 所以if的括號內不是TRUE|FALSE
03/07 17:56, 1F

03/07 17:57, , 2F
上面那句錯了
03/07 17:57, 2F

03/07 18:08, , 3F
當你第一圈跑完後,你幫xu[2]新增了一個值,但xl[2]是空的
03/07 18:08, 3F

03/07 18:09, , 4F
所以第二圈 , xr[2]<-(xl[2]+xu[2])/2 , xl[2] 是 NULL
03/07 18:09, 4F

03/07 18:09, , 5F
導致 xr[2] 是 NA
03/07 18:09, 5F

03/07 22:12, , 6F
感謝!我再把這些地方改過
03/07 22:12, 6F
文章代碼(AID): #1FLo_wth (Statistics)