[R] solving system of nonlinear equations
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sat Nov 20 18:42:07 CET 2004
On Sat, 20 Nov 2004, Enayetur RAHEEM wrote:
> R version: 2.0.0
> OS: WinXP, SP2
>
> I am using "nls" to estimate parameters of a system of nonlinear
> equations. Although, iteration is not converging, I would like to get
> the final estimates and store them in the object, say, "RR".
Please read the help page for nls: this is a misuse of the function:
*Do not use 'nls' on artificial "zero-residual" data.*
You could do this, easily, using a general-purpose optimizer such as
optim().
> Any help would be appreciated. Thanks.
>
> The following is not working ( I mean, I can not store it in "RR")
>
> RR=nls(k~exp(-(q1-lam)/sig)+exp(-(q2-del)/tau),start=st,data=d1,trace=T,control=ctrl)
> 13.24433 : 30 30 15 10
> 3.90071 : 33.00603 38.86974 20.18227 10.15656
> 0.02326074 : 31.44802 36.80447 20.01395 10.07528
> 1.209036e-06 : 31.39755 36.58548 19.99954 10.05675
> 1.543785e-15 : 31.39752 36.58347 19.99947 10.05640
> 1.030527e-29 : 31.39752 36.58347 19.99947 10.05640
> 8.019572e-31 : 31.39752 36.58347 19.99947 10.05640
> 8.019572e-31 : 31.39752 36.58347 19.99947 10.05640
> 8.019572e-31 : 31.39752 36.58347 19.99947 10.05640
> 8.019572e-31 : 31.39752 36.58347 19.99947 10.05640
> 8.019572e-31 : 31.39752 36.58347 19.99947 10.05640
> Error in nls(k ~ exp(-(q1 - lam)/sig) + exp(-(q2 - del)/tau), start = st, :
> number of iterations exceeded maximum of 10
>
>
>
> On Sun, 14 Nov 2004 17:09:06 -0800, Spencer Graves
> <spencer.graves at pdf.com> wrote:
>> Have you considered "nls"? If you read the help file and work
>> through the examples, there is a good chance you can make it work, I
>> think. I think I would start trying "plinear" in "nls", parameterizing
>> the problem in terms of alpha, beta, ln.sigma, and ln.tau, unless you
>> think a solution might require sigma < 0 or tau < 0. Using logarithms
>> will get rid of the constraint and may make the problem numerically
>> easier. Using alpha and beta rather than lambda and delta transforms
>> the problem into an ordinary least squares problem for alpha and beta
>> given any two numbers for sigma and tau (or ln.sigma and ln.tau).
>>
>> If I had trouble with this, I might try two other things:
>>
>> (a) The "solver" in Excel.
>>
>> (b) I might generate a grid in ln.sigma and ln.tau using
>> expand.grid. For each combination of levels, I'd set up the linear
>> regression problem and use "lm" to estimate alpha and beta and compute
>> and store the sum of squares of residuals. Then I'd use "contour" to
>> visualize the sum of squares surface.
>>
>> I've done all these things with crudely similar problems in the
>> past and been happy with the results. If I only had this one problem,
>> I'd be surprised if it would require more than a few hours. If I wanted
>> a general algorithm for other purposes, I might do it two or three
>> different ways both to help select a good algorithm and to build
>> confidence in the results.
>>
>> hope this helps.
>> spencer graves
>> p.s. Some of these techniques are discussed in Venables and Ripley
>> (2002) Modern Applied Statistics with S, 4th ed. (Springer). If you
>> don't have this, I'd encourage you to consider spending some time with it.
>>
>>
>>
>> Enayetur RAHEEM wrote:
>>
>>> Hello there
>>>
>>> Can anybody please tell me if there is any package in R to solve the
>>> following 4 nonlinear equations with 4 unknowns:
>>>
>>> alpha*exp(20/sigma)+ beta*exp(21/tau) = 2
>>> alpha*exp(22/sigma)+ beta*exp(9/tau) = 4
>>> alpha*exp(10/sigma)+ beta*exp(30/tau) = 6
>>> alpha*exp(40/sigma)+ beta*exp(39/tau) = 5
>>>
>>> where
>>>
>>> alpha = exp(lambda/sigma)
>>> beta= exp(delta/tau)
>>>
>>> I need to estimate lambda, sigma, delta, tau
>>>
>>> Thanks.
>>> E Raheem
>>>
>>> ______________________________________________
>>> 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
>>>
>>>
>>
>> --
>> Spencer Graves, PhD, Senior Development Engineer
>> O: (408)938-4420; mobile: (408)655-4567
>>
>>
>
> ______________________________________________
> 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
>
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list