Re: Nonlinear fitting question
- To: mathgroup at smc.vnet.net
- Subject: [mg111612] Re: Nonlinear fitting question
- From: "Kevin J. McCann" <Kevin.McCann at umbc.edu>
- Date: Sat, 7 Aug 2010 01:33:03 -0400 (EDT)
- References: <i3gpnv$2tn$1@smc.vnet.net>
How about something like this. I assume that "in reality" y2=1-y1, and transform the "data" y2, then I just roll my own least squares fit. Kevin (*my measurements*) dat1 = Table[{t, y1[t] + RandomReal[{-1, 1}]/20}, {t, 0, 10, .1}]; dat2 = Table[{t, y2[t] + RandomReal[{-1, 1}]/20}, {t, 0, 10, .1}]; X = dat1[[All, 1]]; Y1 = dat1[[All, 2]]; Y2 = dat2[[All, 2]]; Y = Join[dat1, Transpose[{X, 1 - Y2}]]; ListPlot[Y] X = dat1[[All, 1]]; Y1 = dat1[[All, 2]]; Y2 = dat2[[All, 2]]; Clear[f, \[Kappa], \[Beta]] f[\[Kappa]_, \[Beta]_] := Total[((\[Beta] + E^(-\[Kappa] #[[1]]))/(1 + \[Beta]) - #[[2]])^2 & /@ Y] FindMinimum[f[\[Kappa], \[Beta]], {\[Kappa], 1}, {\[Beta], 1}] eric g wrote: > Hello Group, > In the example below I want to do a fitting "exploiting" the correlation > between y1 and y2 rather than separate them like I did. Like a 2D > fitting thing. > Also, in NonlinearModelFit, I dont like treating 1/(1+b) like another > parameter. > > how to do it? > > best regards, > Eric > > (* my model *) > b = 1; > k = 1/2; > y1[t_] = (b + Exp[-k*t])/(1 + b); > y2[t_] = (1 - Exp[-k*t])/(1 + b); > > (* my measurements *) > dat1 = Table[{t, y1[t] + RandomReal[{-1, 1}]/20}, {t, 0, 10, .1}]; > dat2 = Table[{t, y2[t] + RandomReal[{-1, 1}]/20}, {t, 0, 10, .1}]; > > Plot[{y1[t], y2[t]}, {t, 0, 10}, Epilog -> {{Red, Point[dat1]}, {Blue, > Point[dat2]}}, PlotStyle -> {Red, Blue}] > > (*FITTING*) > (* results with dat1: *) > Clear[b, k]; > Normal[NonlinearModelFit[dat1, (b + Exp[-k*t])/(1 + b), {b, k}, t]] > 0.504916 (0.980528 + E^(-0.492309 t)) > > (* results with dat2: *) > Clear[b, k]; > Normal[NonlinearModelFit[dat2, (1 - Exp[-k*t])/(1 + b), {b, k}, t]] > 0.494348 (1 - E^(-0.524777 t)) > > >