Code inline: On Fri, Jun 4, 2010 at 1:30 PM, Subodh Acharya <shoeb...@gmail.com> wrote: > Hello everyone, > > I am trying to use while loop to iterate a function until convergence. But I > am having problem when I try to use a fixed number of iterations. > Say I want to use maximum iteration of 150. If the value don't converge > within maximum iteration, show warning of no convergence. > > Currently I don't have non- convergence problem so I think my code works > fine. But in future I may encounter such problem that are likely to not > converge easily. > > Below is my function that is working when I don't provide maximum iteration. > > iter<- function (Fpi, Time, tolerance){ > S = 22.4 > Ts = 0.499 > Ti = 0.25 > K = 0.044 > r<- 1.5 > M = Ts- Ti > Ks = 0.044 > Fpt = K*Time + M*S*log(1+ Fpi/(M*S)) > while((Fpt-Fpi) > tolerance) { > Fpi = Fpt > Fpt = K*Time + M*S*log(1+ Fpi/(M*S)) > Fp0 = Fpt > } > return(Fpt) > } > x<- iter(Fpi = 0.224, Time = 0.2, tolerance = 0.000001)
Add a counter variable and a second check in your `while` criteria: ... ... iter <- 0 while (((Fpt - Fpi) > tolerance) && (iter < itermax)) { Fpi = Fpt Fpt = K*Time + M*S*log(1+ Fpi/(M*S)) Fp0 = Fpt iter <- iter + 1 } -- Steve Lianoglou Graduate Student: Computational Systems Biology | Memorial Sloan-Kettering Cancer Center | Weill Medical College of Cornell University Contact Info: http://cbio.mskcc.org/~lianos/contact ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.