[R] help with optimize statement
Jost Burkardt
jost.burkardt at web.de
Fri Feb 24 21:17:11 CET 2006
Hi Tom,
first I can't see, why you think the crossing-point should be 290, look
at the plot
x <- seq(200, 500, 10)
plot( exp(2.4591201+x/(-0.4015233+x)) ~ x, ylim=c(0,40), type="l")
lines(5.924e-5*x+3.437 ~x)
Maybe your vals are wrong?
2) For optimizing a function of 1 parameter, you should use optimize
instead of optim
3) As your Function return the difference of the michaelis-menton eqn
and the line, optimize will maximize the difference, you could use the
sum of squares:
solveEqn<-function(x,vals){
Vmax<-vals[1]
Ks<-vals[2]
m<-vals[3]
c<-vals[4]
diff<-0
mmVal<-exp(Vmax+x/(Ks+x))
slVal<-x*m+c
diff<-mmVal-slVal
return((mmVal-slVal)^2)
}
optimize(solveEqn,c(0,1e6),vals=c(2.4591201,-0.4015233,5.924e-5,3.437))
x <- seq(0, 1e6, len=100)
plot( exp(2.4591201+x/(-0.4015233+x)) ~ x, ylim=c(0,40), type="l")
lines(5.924e-5*x+3.437 ~x)
Jost Burkardt
tom wright wrote:
> Can some help me spot what I'm doing wrong here.
> I have two equations, one a michalis-menton eqn and one a straight line.
> I need to work out where they cross.
>
> I created the function:
> solveEqn<-function(x,vals){
> Vmax<-vals[1]
> Ks<-vals[2]
> m<-vals[3]
> c<-vals[4]
> diff<-0
> mmVal<-exp(Vmax+x/(Ks+x))
> slVal<-x*m+c
>
> diff<-mmVal-slVal
> return(diff)
> }
>
>>optim(c(200,500),solveEqn,vals=c(2.4591201,-0.4015233,5.924e-5,3.437))
>
> Error in optim(c(200, 500), solveEqn, vals = c(2.4591201, -0.4015233, :
> objective function in optim evaluates to length 2 not 1
>
>
> If i replace return(diff) with sum(diff) then the optim function runs
> but returns the wrong value (which should be about 290).
>
> Many thanks
> Tom
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
More information about the R-help
mailing list