[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