I'm fitting a maxwell-botlzmann distribution, using SciPy leastsq. Because of the data I'm fitting, I need high precision (on both the high and low ends), so I'm using numpy.longdouble for my types. Is there a way to use this type with leastsq? As it stands, I'm getting this error:
v = leastsq(self.chi_squared, self.v_0, args=self.args, full_output=1)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/optimize/minpack.py", line 281, in leastsq
maxfev, epsfcn, factor, diag)
TypeError: array cannot be safely cast to required type
I've been using leastsq for a while, and haven't seen this error before, so I suspect it has to do with using an unusual type.
Thanks in advance,
Joan
_______________________________________________
SciPy-User mailing list
SciPy...@scipy.org
http://mail.scipy.org/mailman/listinfo/scipy-user
Hi,
I'm fitting a maxwell-botlzmann distribution, using SciPy leastsq. Because of the data I'm fitting, I need high precision (on both the high and low ends), so I'm using numpy.longdouble for my types. Is there a way to use this type with leastsq? As it stands, I'm getting this error:
v = leastsq(self.chi_squared, self.v_0, args=self.args, full_output=1)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/optimize/minpack.py", line 281, in leastsq
maxfev, epsfcn, factor, diag)
TypeError: array cannot be safely cast to required type
I've been using leastsq for a while, and haven't seen this error before, so I suspect it has to do with using an unusual type.
I don't know if any of the optimization routines can handle
long-double, maybe one of the pure python optimizers is less picky
about the type.
some guesses:
Maybe taking exp(log(...)) of the first part increases the numerical
precision of the calculation enough to get results, or maybe a two
step method with v[2] estimated in an outer optimization and log in
the inner loop.
(statsmodels doesn't have anything that would help, as far as I can see)
Josef
Hi,
What do you mean where is the data coming from? It's from an experiment..function I'm fitting is:maxwell_boltzmann = lambda v,x: v[0]*(x-C0)**(-4)*np.exp(-(L/v[1])**2*(x-C0)**(-2)) + v[2]and the data is in an array of longdoubles.Does that answer your question?Joan
> What do you mean where is the data coming from? It's from an experiment..I don't know if any of the optimization routines can handle
> function I'm fitting is:
> maxwell_boltzmann = lambda v,x:
> v[0]*(x-C0)**(-4)*np.exp(-(L/v[1])**2*(x-C0)**(-2)) + v[2]
> and the data is in an array of longdoubles.
long-double, maybe one of the pure python optimizers is less picky
about the type.
some guesses:
Maybe taking exp(log(...)) of the first part increases the numerical
precision of the calculation enough to get results, or maybe a two
step method with v[2] estimated in an outer optimization and log in
the inner loop.
(statsmodels doesn't have anything that would help, as far as I can see)