[R] Solving equations with optim

Bill.Venables at csiro.au Bill.Venables at csiro.au
Sun Mar 16 00:52:54 CET 2008


There is one obvious way:

> test <- function(x, value = 0) {
    a <- x[1]
    b <- x[2]
    ex <- if (all(x > 0)) 
	(((a/(a+b))*(beta(a,b)/(beta(a,b)-beta(a,b+6))))-0.35259)
         else Inf
    (ex - value)^2
    }
> opt <- optim(c(1,2),test)
> 
> opt[c("par", "value")]
$par
[1] 0.5141272 2.4810257

$value
[1] 2.613923e-17

> 
> originalTest <- function(x) {
    a <- x[1]
    b <- x[2]
    if (all(x > 0)) 
	(((a/(a+b))*(beta(a,b)/(beta(a,b)-beta(a,b+6))))-0.35259)
         else Inf
    }
> 
> with(opt, originalTest(par))
[1] -5.112654e-09

Not bad.

Bill Venables
CSIRO Laboratories
PO Box 120, Cleveland, 4163
AUSTRALIA
Office Phone (email preferred): +61 7 3826 7251
Fax (if absolutely necessary):  +61 7 3826 7304
Mobile:                         +61 4 8819 4402
Home Phone:                     +61 7 3286 7700
mailto:Bill.Venables at csiro.au
http://www.cmis.csiro.au/bill.venables/ 

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of francogrex
Sent: Sunday, 16 March 2008 3:24 AM
To: r-help at r-project.org
Subject: [R] Solving equations with optim


Hello, optim searches for min (or max) of a function, but is it possible
to
solve for a specific value? I mean, I want to find the value of a and b
that
give the function value closest to ZERO (and not min or max) in the
below.
is it possible? thanks

test=function(x){
a=x[1]
b=x[2]
if (all(x>0))(((a/(a+b))*(beta(a,b)/(beta(a,b)-beta(a,b+6))))-0.35259)
else Inf
}
optim(c(1,2),test)

-- 
View this message in context:
http://www.nabble.com/Solving-equations-with-optim-tp16070263p16070263.h
tml
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.



More information about the R-help mailing list