R 构建三对角解算器
给了一个任务来编码一个三对角解算器。R 构建三对角解算器,r,R,给了一个任务来编码一个三对角解算器。 但是,当我尝试运行解算器时,没有得到任何结果。 我在代码中找不到我的错误,如果能得到任何帮助,我将不胜感激 a<-cbind(-1,-1,-1) b<-cbind(2.04,2.04,2.04,2.04) c<-cbind(-1,-1,-1) d<-c(40.8,0.8,0.8,200) tridiagsolver<-function(a,b,c,d){ N<-length(b) for (n in (2:N)){
但是,当我尝试运行解算器时,没有得到任何结果。 我在代码中找不到我的错误,如果能得到任何帮助,我将不胜感激
a<-cbind(-1,-1,-1)
b<-cbind(2.04,2.04,2.04,2.04)
c<-cbind(-1,-1,-1)
d<-c(40.8,0.8,0.8,200)
tridiagsolver<-function(a,b,c,d){
N<-length(b)
for (n in (2:N)){
ratio<-a[n]/b[n-1]
b[n]=b[n]-ratio*c[n-1]
d[n]=d[n]-ratio*d[n-1]
}
d[N]=d[N]/b[N]
for (n in (1:(N-1))){
d[N-n]=(d[N-n]-c[N-n]*d[N-n+1])/b[N-n]
}
return(d)
}
tridiagsolver(a,b,c,d)
> tridiagsolver(a,b,c,d)
[1] NA NA NA NA
aa[N]
没有定义,因为b
比a
长。索引问题?例如,a[n]/b[n-1]
最终将为n=4
给出NA
。谢谢大家,这很有帮助,我得到了我的结果=)