[SciPy-User] is it possible to constrain the scipy.optimize.curve_fit function?

federico vaggi vaggi.federico@gmail....
Thu May 17 04:51:05 CDT 2012


Afaik,

there was a big discussion about this a while ago, and the short answer is,
currently there is no 'automatic' way to do it.  However, in your case,
it's pretty easy.

Simply define:

def func (x, a,b, r):
     a = abs(a)
     b = abs(b)
     r = abs(r)
     return r + a*np.power(x,-b)

And that will do the trick.  If you need to more complex boundaries, you
can simply use a combination of period functions with a given amplitude or
what have you.  Alternatively, there are *a lot* of optimization libraries
available for Python that are not a part of scipy that offer the
possibility to specify boundaries.

For example:

http://newville.github.com/lmfit-py/
http://ab-initio.mit.edu/wiki/index.php/NLopt_Python_Reference

Federico



Date: Wed, 16 May 2012 18:20:27 +0200
> From: servant mathieu <servant.mathieu@gmail.com>
> Subject: [SciPy-User] is it possible to constrain the
>        scipy.optimize.curve_fit function?
> To: scipy-user@scipy.org
> Message-ID:
>        <CALnu5bM+c9L7taG_CBHdJhw7xpe5amHSVBRUEX7pa7gnRN+-7Q@mail.gmail.com
> >
> Content-Type: text/plain; charset="iso-8859-1"
>
> Dear scipy users,
>
> I'm trying to fit to data a power law of the form :
>
>
>
>
> def func (x, a,b, r):
>
>      return r + a*np.power(x,-b)
>
>
>
>
> I would like to constrain the curve_fit routine to only allow
> positive parameter values. How is it possible to do so?
>
>
>
> Kind regards,
>
> Mathieu
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20120517/e9831cd9/attachment.html 


More information about the SciPy-User mailing list