[R] Help with iteration using while loop
Steve Lianoglou
mailinglist.honeypot at gmail.com
Fri Jun 4 20:14:30 CEST 2010
Code inline:
On Fri, Jun 4, 2010 at 1:30 PM, Subodh Acharya <shoebodh at 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
More information about the R-help
mailing list