I need to solve a equation like this : a = b/(1+x) + c/(1+x)^2 + d/(1+x)^3 where a,b,c,d are known constant. Is there any R-way to do that? Thanks in advance -- View this message in context: http://www.nabble.com/How-to-solve-following-equation--tp20785063p20785063.html Sent from the R help mailing list archive at Nabble.com.
Assume a = 1. If not set b = b/a, etc. Now use (1) uniroot> f <- function(x) b + c/(1+x) + d/(1+x)^2 - 1 - x > uniroot(f, 0:1)$root [1] 0.8392679 $f.root [1] 3.049818e-05 $iter [1] 3 $estim.prec [1] 6.103516e-05 or multiply through by 1+x and subtract 1 from both sides giving x = b + c/(1+x) + d/(1+x)^2 - 1 and iterate that.> a <- b <- c <- d <- 1 > x <- 0 > for(i in 1:25) {+ x <- b + c/(1+x) + d/(1+x)^2 - 1 + print(x) + } [1] 2 [1] 0.4444444 [1] 1.171598 [1] 0.6725419 [1] 0.9553676 [1] 0.7729558 [1] 0.8821595 [1] 0.8135892 [1] 0.8554268 [1] 0.829437 [1] 0.8454056 [1] 0.835527 [1] 0.8416126 [1] 0.837854 [1] 0.8401717 [1] 0.838741 [1] 0.8396236 [1] 0.839079 [1] 0.839415 [1] 0.8392076 [1] 0.8393356 [1] 0.8392566 [1] 0.8393053 [1] 0.8392753 [1] 0.8392938 On Mon, Dec 1, 2008 at 9:47 PM, RON70 <ron_michael70 at yahoo.com> wrote:> > I need to solve a equation like this : > > a = b/(1+x) + c/(1+x)^2 + d/(1+x)^3 > > where a,b,c,d are known constant. Is there any R-way to do that? > > Thanks in advance > -- > View this message in context: http://www.nabble.com/How-to-solve-following-equation--tp20785063p20785063.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >
Dear RON70, Another approach would be Ryacas [1]. Take a look at Section 5.3.2:> yacas("Newton((1+x)^3-(1+x)^2-(1+x)-1,x,0.1,0.00001)")expression(0.839286755214161) Note that this result is _similar_ to Gabor Grothendieck's solution using optim(). HTH, Jorge [1] http://cran.r-project.org/web/packages/Ryacas/index.html On Mon, Dec 1, 2008 at 9:47 PM, RON70 <ron_michael70@yahoo.com> wrote:> > I need to solve a equation like this : > > a = b/(1+x) + c/(1+x)^2 + d/(1+x)^3 > > where a,b,c,d are known constant. Is there any R-way to do that? > > Thanks in advance > -- > View this message in context: > http://www.nabble.com/How-to-solve-following-equation--tp20785063p20785063.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. >[[alternative HTML version deleted]]
Thanks for this reply, However I am interested to know why I need to modify my function to a=1? Regards, Gabor Grothendieck wrote:> > Assume a = 1. If not set b = b/a, etc. > Now use (1) uniroot > >> f <- function(x) b + c/(1+x) + d/(1+x)^2 - 1 - x >> uniroot(f, 0:1) > $root > [1] 0.8392679 > > $f.root > [1] 3.049818e-05 > > $iter > [1] 3 > > $estim.prec > [1] 6.103516e-05 > > or multiply through by 1+x > and subtract 1 from both sides giving > x = b + c/(1+x) + d/(1+x)^2 - 1 > and iterate that. > >> a <- b <- c <- d <- 1 >> x <- 0 >> for(i in 1:25) { > + x <- b + c/(1+x) + d/(1+x)^2 - 1 > + print(x) > + } > [1] 2 > [1] 0.4444444 > [1] 1.171598 > [1] 0.6725419 > [1] 0.9553676 > [1] 0.7729558 > [1] 0.8821595 > [1] 0.8135892 > [1] 0.8554268 > [1] 0.829437 > [1] 0.8454056 > [1] 0.835527 > [1] 0.8416126 > [1] 0.837854 > [1] 0.8401717 > [1] 0.838741 > [1] 0.8396236 > [1] 0.839079 > [1] 0.839415 > [1] 0.8392076 > [1] 0.8393356 > [1] 0.8392566 > [1] 0.8393053 > [1] 0.8392753 > [1] 0.8392938 > > On Mon, Dec 1, 2008 at 9:47 PM, RON70 <ron_michael70 at yahoo.com> wrote: >> >> I need to solve a equation like this : >> >> a = b/(1+x) + c/(1+x)^2 + d/(1+x)^3 >> >> where a,b,c,d are known constant. Is there any R-way to do that? >> >> Thanks in advance >> -- >> View this message in context: >> http://www.nabble.com/How-to-solve-following-equation--tp20785063p20785063.html >> Sent from the R help mailing list archive at Nabble.com. >> >> ______________________________________________ >> R-help at 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. >> > > ______________________________________________ > R-help at 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. > >-- View this message in context: http://www.nabble.com/How-to-solve-following-equation--tp20785063p20817656.html Sent from the R help mailing list archive at Nabble.com.