作者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