# Re: [R] Help with iteration using while loop

From: Steve Lianoglou <mailinglist.honeypot_at_gmail.com>
Date: Fri, 04 Jun 2010 14:14:30 -0400

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
| Memorial Sloan-Kettering Cancer Center
| Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact

______________________________________________
R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help