This content originally appeared on DEV Community and was authored by eyakem-a11
In the case of M=4
set.seed(1)
t= Obr_56_n_T2_250713$V1
y= Obr_56_n_T2_250713$V2
definition of the 8D exponential sum square functions
f=function(param) {
sum((param[1] + (param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9]) – y)^2))
}
derivative=function(param) {
return(c(2*sum(param[1] +
(param[2]*exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y),
2*sum(exp(-(t)/param[3])(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y)),
2*sum((param[2]((t)/(param[3])^2)exp(-(t)/param[3]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y)),
2*sum((exp(-(t)/param[5]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y)),
2*sum((param[4]((t)/(param[5])^2)exp(-(t)/param[5]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y)),
2*sum((exp(-(t)/param[7]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y)),
2*sum((param[6]((t)/(param[7])^2)exp(-(t)/param[7]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y)),
2*sum((exp(-(t)/param[9]))(param[1] +
(param[2]exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y)),
2*sum((param[8]((t)/(param[9])^2)exp(-(t)/param[9]))(param[1] +
(param[2]*exp(-(t)/param[3])+param[4]*exp(-(t)/param[5])+param[6]*exp(-(t)/param[7])+param[8]*exp(-(t)/param[9])) – y))))
}
locate the minimum of the function using the Nelder-Mead method
result=optim(
c(runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000),runif(1,0,20000)), # start at a random position
f, # the function to minimize
derivative, # no function gradient
method=”L-BFGS-B”, # use the L-BFGS-B method
control=c( # configure Nelder-Mead
maxit=100, # maximum iterations of 100
factr=1e-8, # response tolerance over-one step
alpha=1.0, # reflection factor
beta=0.5, # contraction factor
gamma=2.0),
lower=0.1,
upper = Inf
)
result
This content originally appeared on DEV Community and was authored by eyakem-a11