[R] Newton method again
Rolf Turner
r.turner at auckland.ac.nz
Wed Apr 8 05:43:36 CEST 2009
On 8/04/2009, at 2:31 PM, Roslina Zakaria wrote:
>
> Hi Rolf,
>
> I would like to extend the problem that I asked you before
> regarding the newton method using 4 functions with 4 parameters.
> My functions involve the modified bessel function of the first kind
> which I can type them without any problem.
> The big problem is the Jacobian matrix.
> I use Maple 11.0 to get the algebraic expression for the Jacobian
> matrix. The problem is that the Jacobian matrix is so complicated
> and it is quite impossible to type the expression as I end up of
> more than 50 pages for the algebraic form of the Jacobian. Can you
> suggest any method to solve the problems?
I'm a frayed knot. I would suggest that if you really need to do
this then you use
some other numerical optimizer (optim(), nlm(), nls(), ...). These
don't necessarily
require an analytic expression for the Jacobian.
If this is another homework exercise that *insists* that you use
Newton's method, then
you're in a bit of a bind.
There are two possibilities that I can think of.
One is to program up your own numerical Jacobian calculator, and
instead of
having your objective function return the analytic expression for the
Jacobian
at the current parameter values, have it return the numerical
approximation
to this Jacobian. This would be dicey; calculating such a numerical
approximation
requires a substantial background in numerical analysis. I wouldn't
want to try
this myself.
The second poss. is to get Maple to return the expression for the
Jacobian as
Fortran code (which I *think* Maple will do --- but don't quote me on
this!
I'm not a Maple user.) You can then compile and dynamically load
(see ?SHLIB and
?dyn.load) the Fortran code and call this inside your objective
function, using
.Fortran(). (See ?.Fortran .)
This would be much safer than the first possibility, and is the way I
would go
(given that Maple will return Fortran code) but it requires you to come
to terms with the use of .Fortran() which is a bit demanding of the
beginner
(as I gather you are).
If this is indeed a homework exercise, then your instructor should be
giving you
(quite) a bit more guidance, IMHO.
Good luck.
cheers,
Rolf
######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
More information about the R-help
mailing list