On Tue, Aug 2, 2016 at 6:41 PM, Siegfried Gonzi <siegfried.go...@ed.ac.uk> wrote: > Hi all > > Does anyone know how to invoke curve_fit with a variable number of > parameters, e.g. a1 to a10 without writing it out, > > e.g. > > def func2( x, a1,a2,a3,a4 ): > > # Bessel function > tmp = scipy.special.j0( x[:,:] ) > > return np.dot( tmp[:,:] , np.array( [a1,a2,a3,a4] ) > > > ### yi = M measurements (.e.g M=20) > ### x = M (=20) rows of N (=4) columns > popt = scipy.optimize.curve_fit( func2, x, yi ) > > I'd like to get *1 single vector* (in this case of size 4) of optimised A(i) > values. > > The function I am trying to minimise (.e.g F(r) is a vector of 20 model > measurements): F(r) = SUM_i_to_N [ A(i) * bessel_function_J0(i * r) ] > > > Thanks, > Siegfried Gonzi > > > > > -- > The University of Edinburgh is a charitable body, registered in > Scotland, with registration number SC005336.
You can use `leastsq` or `least_squares` directly: they both accept an array of parameters. BTW, since all of these functions are actually in scipy, you might want to redirect this discussion to the scipy-user mailing list. Cheers, Evgeni _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion