# [SciPy-User] Nonlinear fit to multiple data sets with a shared parameter, and three variable parameters.

Troels Emtekær Linnet tlinnet@gmail....
Wed Apr 3 11:09:55 CDT 2013

```Dear Scipy users.

I am having trouble to implement what is probably known as:
Nonlinear fit to multiple data sets with shared parameters

I haven't been able to find a solution for this in scipy, and I would be
happy to hear if someone could guide med how to fix this.

I have a set of measured NMR peaks.
Each peak has two eksperiment x values, x1, x2, which I can fit to a
measured Y value.
I have used lmfit <http://newville.github.com/lmfit-py/>, which extends scipy
leastsq<http://docs.scipy.org/doc/scipy-0.10.1/reference/tutorial/optimize.html>
with
some boundary options.

For each peak, i can fit the following function:

--------------------------------------
def R1r_exch(pars,inp,data=None,eps=None):
tiltAngle,omega1=inp
R1 = pars['R1'].value
R2 = pars['R2'].value
kEX = pars['kEX'].value
phi = pars['phi'].value
model =
R1*cos(tiltAngle*pi/180)**2+(R2+phi*kEX/((2*pi*omega1/tan(tiltAngle*pi/180))**2+(2*pi*omega1)**2+kEX**2))*sin(tiltAngle*pi/180)**2
if data is None:
return model
if eps is None:
return (model - data)
return (model-data)/eps

calling with

datX = [tilt,om1]
par = lmfit.Parameters()
lmf = lmfit.minimize(R1r_exch, par, args=(datX, R1rex,
R1rex_err),method='leastsq')

print lmf.success, lmf.nfev
print par['R1'].value, par['R2'].value, par['kEX'].value, par['phi'].value
fig = figure('R1r %s'%NI)
calcR1r = R1r_exch(par,datX)
tilt_s, om1_s = zip(*sorted(zip(datX[0], datX[1])))
datXs = [array(tilt_s), array(om1_s)]
calcR1rs = f_R1r_exch_lmfit(par,datXs)
-----------------------------------------------------------

That goes fine for each single peak.

But now I wan't to do global fitting.
http://www.originlab.com/index.aspx?go=Products/Origin/DataAnalysis/CurveFitting/GlobalFitting
http://www.wavemetrics.com/products/igorpro/dataanalysis/curvefitting/globalfitting.htm

I would like to fit the nonlinear model to several peak data sets
simultaneously.
The parameters "R1,R2 and phi" should be allowed to vary for each NMR peak,
while kEX should be global and shared for all NMR peaks.

Is there anybody who would be able to help finding a solution or guide med
to a package?

Best
Troels Emtekær Linnet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20130403/cfa90387/attachment.html
```