Andrew McLean wrote: > Bernhard, > > Levenberg-Marquardt is a good solution when you want to solve a general > non-linear least-squares problem. As Robert said, the OPs problem is > linear and Robert's solution exploits that. Using LM here is unnecessary > and I suspect a fair bit less efficient (i.e. slower). > > - Andrew > > > [EMAIL PROTECTED] wrote: >> Hi Robert, >> >> I'm using the scipy package for such problems. In the submodule >> scipy.optimize there is an implmentation of a least-square fitting >> algorithm (Levenberg-Marquardt) called leastsq. >> >> You have to define a function that computes the residuals between your >> model and the data points: >> >> import scipy.optimize >> >> def model(parameter, x, y): >> a, b, c = parameter >> return a*x + b*y + c >> >> def residual(parameter, data, x, y): >> res = [] >> for _x in x: >> for _y in y: >> res.append(data-model(parameter,x,y) >> return res >> >> params0 = [1., 1.,1.] >> result = scipy.optimize.leastsq(resdiual, params0, (data,x,y)) >> fittedParams = result[0] >> >> If you haven't used numeric, numpy or scipy before, you should take a >> look at an introduction. It uses some nice extended array objects, >> where you can use some neat index tricks and compute values of array >> items without looping through it. >> >> Cheers! Bernhard >>
<<snip>> Hi Bernhard, I am just starting to learn Python; could you plz tell me specifically the introduction(s) you have in mind? TIA, DaveB -- http://mail.python.org/mailman/listinfo/python-list