[R] Solving systems of non-linear equations in R

Spencer Graves spencer.graves at pdf.com
Wed Feb 23 06:08:33 CET 2005


      A system of n equations in n unknowns has a unique solution if the 
n equations are linear and linearly independent.  If the system is 
nonlinear, then one must characterize the nonlinearity before saying 
anything about whether a solution exists and if so how many solutions 
are there? 

      Example 1:  Solve sin(x)=0 for x.  Answer:  x = 2*n*pi, for n = 
any integer. 

      Example 2:  Solve sin(x) = 2 for x.  Answer:  If x must be a real 
number, then this equation has no solutions. 

      Are your functions monotonic?  Continuous?  Differentiable? 

      Without getting into pathologies like the Cantor function (e.g., 
http://www.cut-the-knot.org/do_you_know/cantor.shtml), my experience 
with a variety of practical problem like this suggests that it is best 
to recast the problem as one of minimizing, e.g., the sum of squared 
deviations from target.  Moreover, I've had good luck transforming the 
parameter space to eliminate constraints -- or incorporating the 
constraints into the objective function and then solving the 
superficially unconstrained problem.  If my functions have singularities 
where I might get 0/0 or Inf-Inf, for example, I use asymptotic 
expansions to "approximate" the function(s) near the singularities more 
accurately than can be achieved with any finite-precision arithmetic. 

      With all of this, I'm confident that there are better algorithms 
than the different methods in "optim", but I don't have not had the need 
to hunt for them.  The methods in "optim" provide a reasonable range of 
options for the problems I've encountered. 

      The R project has another advantage over a commercial software:  
You can see the source code.  You can trace it step by step and find out 
where it does not work well for the specific problems you consider.  If 
you're clever, you might be able to find a way to improve that algorithm 
and make it part of your thesis -- and get a publication on it in some 
statistical software journal.  Where else can you so easily climb up and 
stand on the shoulders of giants?  If you find a platform for innovation 
better than R, please let me know. 

      hope this helps. 
      spencer graves    

T Petersen wrote:

> No, this doesn't seem right. What I look for is something that could 
> solve nonlinear systems with n unknowns and n equations. So there will 
> be zero degrees of freedom, and statistical methods can't be the right 
> way forward.
>
> Specifically  I can see that the litterature mentions's "Scarf's 
> algoritm" (Scarf 1967) and Merril's refinement of Scarf's algoritm in 
> 1972, but there might be other algoritms too...
>
> Regards...TP
>
> yutaka hamaoka wrote:
>
>>
>> I believe
>> library(systemfit)
>> has nlsytemfit function.
>>
>> Yh
>>
>>
>> T Petersen wrote:
>>
>>> I'm about to write my thesis in economics and will need to setup and 
>>> solve a system of non-linear equations. At our university we usually 
>>> use GAMS for this, and though GAMS is a fine program, it bugs me a 
>>> that I won't be able to run my code after I finish my thesis without 
>>> buying a license for the program(about $3.500 :-(( )
>>>
>>> So I've looked around for NL-stuff for R, but I can't find anything. 
>>> The closest thing appears to be optim(), but it doesn't seem to 
>>> allow constraints(as in fn = constant) or equations systems. So, 
>>> anyone knows if there is a method in R that you can use for this 
>>> purpose?
>>>
>>> regards
>>>
>>> ______________________________________________
>>> 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
>>>
>>
>> ______________________________________________
>> 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
>>
>
> ______________________________________________
> 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