[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-gsl] Levenberg-Marquardt misbehaves...
From: |
Federico Zenith |
Subject: |
[Help-gsl] Levenberg-Marquardt misbehaves... |
Date: |
Wed, 23 Feb 2005 16:50:34 +0100 |
User-agent: |
KMail/1.7.2 |
Hi everybody,
I am working on a fuel cell model. Right now I have implemented a regression
member function in a "Fuelcell" class (I work in C++ with the static-function
hack for GSL).
The Regressor( ) should, given some observations, find out the best parameters
(there are 8, 7 of the cell plus the inductance of the wiring) of a impedance
test, which is used to extract data useful for cell modelling.
The underlying Fuelcell is quite nasty - there are two brent and one
steffenson iteration loops below that level. All parameters, to have any
meaning, must be > 0.
The various _f, _df and _fdf of the LM loop return GSL_EDOM if any parameter
is < 0, and also print out which parameter is bad and with what value.
What happens is that the algorithm cycles between two values for the
cathode-side diffusion-layer thickness, i.e. -246.626 and -0.65914 (metres).
This might have to do with the fact that the diffusion layer is not very
important for the data set I'm working in.
How to I tell LM to stay away from the negative domain?
Cheers,
-Federico
PS- I noticed there are no derivative-free nonlinear regression methods. I
happen to have a paper from 1978 about DUD, exactly such an algorithm. Is
does not even seem too difficult to implement. Is there interest to include
such an algorithm?
pgpfT1eiL3FNx.pgp
Description: PGP signature
- [Help-gsl] Levenberg-Marquardt misbehaves...,
Federico Zenith <=