Hi Oscar,

On Feb 17, 2014, at 7:03 PM, Oscar Benjamin <oscar.j.benja...@gmail.com> wrote:

> On 17 February 2014 22:15, "André Walker-Loud <walksl...@gmail.com>"
> <walksl...@gmail.com> wrote:
>>> This particular case is easily solved:
>>> 
>>> def f_lambda(x,pars):
>>>    return lambda x: poly(x,*pars)
>>> 
>>> You let the closure take care of pars and return a function that takes
>>> exactly one argument x.
>> 
>> Hi Oscar,
>> 
>> This is the opposite of what I am trying to do.  In the example, x 
>> represents the data and pars represent the parameters I want to determine, 
>> so it is the pars which I need passed into the "func_code.co_varnames" part 
>> of f.
> 
> BTW if you're trying to fit the coefficients of a polynomial then a
> general purpose optimisation function is probably not what you want to
> use. I would probably solve (in a least squares sense and after
> suitable scaling) the Vandermonde matrix.
> 
> (I can explain that more if desired.)

That looks interesting (just reading the wikipedia entry on the Vandermonde 
matrix).
Is there a good algorithm for picking the values the polynomial is evaluated at 
to construct the matrix?
Is there a benefit to this method vs a standard linear least squares?
Given the Vandermonde matrix, how do you determine the uncertainty in the 
resulting parameters?
I guess yes, I am interested to learn more.

The most common problem I am solving is fitting a sum of real exponentials to 
noisy data, with the model function

C(t) = sum_n A_n e^{- E_n t}

the quantities of most interest are E_n, followed by A_n so I solve this with 
non-linear regression.
To stabilize the fit, I usually do a linear-least squares for the A_n first, 
solving as a function of the E_n, and then do a non-linear fit for the E_n.  
Often, we construct multiple data sets which share values of E_n but have 
different A_n, where A_n is promoted to a matrix, sometimes square, sometimes 
not.  So I want a wrapper on my chisq which can take the input parameter values 
and deduce the fit function, and pass the variable names to my current 
minimizer - hence my original question, and why I don’t want to write a special 
case for each possible combination of n_max, and the shape of A_n.


Cheers,

Andre
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to