MathGroup Archive 1996

[Date Index] [Thread Index] [Author Index]

Search the Archive

Boundaries in Nonlinear Fittings

  • To: mathgroup at smc.vnet.net
  • Subject: [mg3925] Boundaries in Nonlinear Fittings
  • From: Christian MONTANARI <cm at ee.port.ac.uk>
  • Date: Fri, 10 May 1996 03:28:52 -0400
  • Sender: owner-wri-mathgroup at wolfram.com

Here is a patch to NonlinearFit.m which allows to "bounce" on the 
boundaries of your fit.
and... non buggy weigthing factors!

It worked for the fitting of my data.

Christian

PS:Dr. Wolfram might get me a medail?

Address: University of Portsmouth,
	 Department of Electrical and Electronic Engineering,
         Microwave, Telecommunications and Signal Processing Research Group,
         Anglesea Building,    		        Phone: +44 (0)1705 842543
         Anglesea Road,				Fax:   +44 (0)1705 295336
         Portsmouth,P01 3DJ,England.		Email: cm at ee.port.ac.uk


23d22
< 	Version 1.2, Sep 1994 C. Montanari !...
41c40
< Print["chris modifs..in NonlinearFit.00."];
---
> 
59,62d57
< BoundsStop::usage =
< "BoundsStop is an option for NonlinearFit. If True, the fit will stop
< when the range limits of the parameters are encountered."
< 
83,84c78
< 	PrecisionGoal -> 3,
< 	BoundsStop -> False};
---
> 	PrecisionGoal -> 3};
170c164
< 			Map[If[Head[#] === List, Last[Last[#]], 1]&,
---
> 			Map[If[Head[#] === List, Last[#], 1]&,
200c194
< 			fmopts,out,start,precgoal,response,s,bounds},
---
> 			fmopts,out,start,precgoal,response,s},
202c196
< 		{maxits,method,progress,weights,workprec,accgoal,precgoal,bounds} =
---
> 		{maxits,method,progress,weights,workprec,accgoal,precgoal} =
204,205c198,199
< 				WorkingPrecision, AccuracyGoal, PrecisionGoal,
< 				BoundsStop}/.{opts}/.Options[NonlinearFit];
---
> 				WorkingPrecision, AccuracyGoal, PrecisionGoal}/.
> 			{opts}/.Options[NonlinearFit];
224c218
< 			weights = Table[1,{#1},{#2}]& @@ Dimensions[response];
---
> 			weights = Table[1,{#1},{#2}]& @@ Dimensions[response]
241c235
< 					{x,{s},min,max},
---
> 					{x,s,min,max},
279d272
< 		bounds=TrueQ[bounds];
288c281
< 				maxrng,progress,bounds,maxits,workprec,precgoal,accgoal,
---
> 				maxrng, progress, maxits, workprec, precgoal, accgoal,
305c298
< 		parameters_,start_,minr_,maxr_,prog_,bounds_,mi_,wp_,pg_,ag_,
---
> 		parameters_, start_, minr_, maxr_, prog_, mi_, wp_, pg_, ag_,
340c333
< 		params_,start_,minr_,maxr_,progress_,bounds_,maxits_, 
---
> 		params_, start_, minr_, maxr_, progress_, maxits_, 
343,344c336,337
< 			nweights = N[weights, wp], guess = N[start, wp], guessy,
< 			nminr = N[minr, wp], nmaxr = N[maxr, wp], lambda=1/100,
---
> 			nweights = N[weights, wp], guess = N[start, wp], 
> 			nminr = N[minr, wp], nmaxr = N[maxr, wp], lambda = 1/1000,
349,353d341
< 
< 		If[!bounds,
< 			guess=Map[Max,Transpose[{guess,nminr}]];
< 			guess=Map[Min,Transpose[{guess,nmaxr}]]];
< 
369,370c357
< 				(rngflag = !bounds ||
< 					(And @@ Thread[N[nminr < guess < nmaxr,wp]])),
---
> 				(rngflag = And @@ Thread[N[nminr < guess < nmaxr,wp]]),
378,383c365
< 			guessy=guess+deltaguess;
< 			If[!bounds,
< 				guessy=Map[Max,Transpose[{guessy,nminr}]];
< 				guessy=Map[Min,Transpose[{guessy,nmaxr}]]];
< (*			Print[bounds,rngflag,guessy,nminr,nmaxr];*)
< 			newvals = vals @@ guessy;
---
> 			newvals = vals @@ (guess + deltaguess);
385d366
< 			
392,394c373,375
< 				guess = guessy;
< 				tmpchi = newchi;
< 				{alpha, beta} = calcstep[response, nweights,
---
> 					guess = guess + deltaguess;
> 					tmpchi = newchi;
> 					{alpha, beta} = calcstep[response, nweights,

--2009596274-851401618-830962609=:11098
Content-Description: try the patch!
Content-ID: <Pine.HPP.3.91.960501155649.11098C at swift.ee.port.ac.uk>

MjNkMjINCjwgCVZlcnNpb24gMS4yLCBTZXAgMTk5NCBDLiBNb250YW5hcmkg
IS4uLg0KNDFjNDANCjwgUHJpbnRbImNocmlzIG1vZGlmcy4uaW4gTm9ubGlu
ZWFyRml0LjAwLiJdOw0KLS0tDQo+IA0KNTksNjJkNTcNCjwgQm91bmRzU3Rv
cDo6dXNhZ2UgPQ0KPCAiQm91bmRzU3RvcCBpcyBhbiBvcHRpb24gZm9yIE5v
bmxpbmVhckZpdC4gSWYgVHJ1ZSwgdGhlIGZpdCB3aWxsIHN0b3ANCjwgd2hl
biB0aGUgcmFuZ2UgbGltaXRzIG9mIHRoZSBwYXJhbWV0ZXJzIGFyZSBlbmNv
dW50ZXJlZC4iDQo8IA0KODMsODRjNzgNCjwgCVByZWNpc2lvbkdvYWwgLT4g
MywNCjwgCUJvdW5kc1N0b3AgLT4gRmFsc2V9Ow0KLS0tDQo+IAlQcmVjaXNp
b25Hb2FsIC0+IDN9Ow0KMTcwYzE2NA0KPCAJCQlNYXBbSWZbSGVhZFsjXSA9
PT0gTGlzdCwgTGFzdFtMYXN0WyNdXSwgMV0mLA0KLS0tDQo+IAkJCU1hcFtJ
ZltIZWFkWyNdID09PSBMaXN0LCBMYXN0WyNdLCAxXSYsDQoyMDBjMTk0DQo8
IAkJCWZtb3B0cyxvdXQsc3RhcnQscHJlY2dvYWwscmVzcG9uc2Uscyxib3Vu
ZHN9LA0KLS0tDQo+IAkJCWZtb3B0cyxvdXQsc3RhcnQscHJlY2dvYWwscmVz
cG9uc2Usc30sDQoyMDJjMTk2DQo8IAkJe21heGl0cyxtZXRob2QscHJvZ3Jl
c3Msd2VpZ2h0cyx3b3JrcHJlYyxhY2Nnb2FsLHByZWNnb2FsLGJvdW5kc30g
PQ0KLS0tDQo+IAkJe21heGl0cyxtZXRob2QscHJvZ3Jlc3Msd2VpZ2h0cyx3
b3JrcHJlYyxhY2Nnb2FsLHByZWNnb2FsfSA9DQoyMDQsMjA1YzE5OCwxOTkN
CjwgCQkJCVdvcmtpbmdQcmVjaXNpb24sIEFjY3VyYWN5R29hbCwgUHJlY2lz
aW9uR29hbCwNCjwgCQkJCUJvdW5kc1N0b3B9Ly57b3B0c30vLk9wdGlvbnNb
Tm9ubGluZWFyRml0XTsNCi0tLQ0KPiAJCQkJV29ya2luZ1ByZWNpc2lvbiwg
QWNjdXJhY3lHb2FsLCBQcmVjaXNpb25Hb2FsfS8uDQo+IAkJCXtvcHRzfS8u
T3B0aW9uc1tOb25saW5lYXJGaXRdOw0KMjI0YzIxOA0KPCAJCQl3ZWlnaHRz
ID0gVGFibGVbMSx7IzF9LHsjMn1dJiBAQCBEaW1lbnNpb25zW3Jlc3BvbnNl
XTsNCi0tLQ0KPiAJCQl3ZWlnaHRzID0gVGFibGVbMSx7IzF9LHsjMn1dJiBA
QCBEaW1lbnNpb25zW3Jlc3BvbnNlXQ0KMjQxYzIzNQ0KPCAJCQkJCXt4LHtz
fSxtaW4sbWF4fSwNCi0tLQ0KPiAJCQkJCXt4LHMsbWluLG1heH0sDQoyNzlk
MjcyDQo8IAkJYm91bmRzPVRydWVRW2JvdW5kc107DQoyODhjMjgxDQo8IAkJ
CQltYXhybmcscHJvZ3Jlc3MsYm91bmRzLG1heGl0cyx3b3JrcHJlYyxwcmVj
Z29hbCxhY2Nnb2FsLA0KLS0tDQo+IAkJCQltYXhybmcsIHByb2dyZXNzLCBt
YXhpdHMsIHdvcmtwcmVjLCBwcmVjZ29hbCwgYWNjZ29hbCwNCjMwNWMyOTgN
CjwgCQlwYXJhbWV0ZXJzXyxzdGFydF8sbWlucl8sbWF4cl8scHJvZ18sYm91
bmRzXyxtaV8sd3BfLHBnXyxhZ18sDQotLS0NCj4gCQlwYXJhbWV0ZXJzXywg
c3RhcnRfLCBtaW5yXywgbWF4cl8sIHByb2dfLCBtaV8sIHdwXywgcGdfLCBh
Z18sDQozNDBjMzMzDQo8IAkJcGFyYW1zXyxzdGFydF8sbWlucl8sbWF4cl8s
cHJvZ3Jlc3NfLGJvdW5kc18sbWF4aXRzXywgDQotLS0NCj4gCQlwYXJhbXNf
LCBzdGFydF8sIG1pbnJfLCBtYXhyXywgcHJvZ3Jlc3NfLCBtYXhpdHNfLCAN
CjM0MywzNDRjMzM2LDMzNw0KPCAJCQlud2VpZ2h0cyA9IE5bd2VpZ2h0cywg
d3BdLCBndWVzcyA9IE5bc3RhcnQsIHdwXSwgZ3Vlc3N5LA0KPCAJCQlubWlu
ciA9IE5bbWluciwgd3BdLCBubWF4ciA9IE5bbWF4ciwgd3BdLCBsYW1iZGE9
MS8xMDAsDQotLS0NCj4gCQkJbndlaWdodHMgPSBOW3dlaWdodHMsIHdwXSwg
Z3Vlc3MgPSBOW3N0YXJ0LCB3cF0sIA0KPiAJCQlubWluciA9IE5bbWluciwg
d3BdLCBubWF4ciA9IE5bbWF4ciwgd3BdLCBsYW1iZGEgPSAxLzEwMDAsDQoz
NDksMzUzZDM0MQ0KPCANCjwgCQlJZlshYm91bmRzLA0KPCAJCQlndWVzcz1N
YXBbTWF4LFRyYW5zcG9zZVt7Z3Vlc3Msbm1pbnJ9XV07DQo8IAkJCWd1ZXNz
PU1hcFtNaW4sVHJhbnNwb3NlW3tndWVzcyxubWF4cn1dXV07DQo8IA0KMzY5
LDM3MGMzNTcNCjwgCQkJCShybmdmbGFnID0gIWJvdW5kcyB8fA0KPCAJCQkJ
CShBbmQgQEAgVGhyZWFkW05bbm1pbnIgPCBndWVzcyA8IG5tYXhyLHdwXV0p
KSwNCi0tLQ0KPiAJCQkJKHJuZ2ZsYWcgPSBBbmQgQEAgVGhyZWFkW05bbm1p
bnIgPCBndWVzcyA8IG5tYXhyLHdwXV0pLA0KMzc4LDM4M2MzNjUNCjwgCQkJ
Z3Vlc3N5PWd1ZXNzK2RlbHRhZ3Vlc3M7DQo8IAkJCUlmWyFib3VuZHMsDQo8
IAkJCQlndWVzc3k9TWFwW01heCxUcmFuc3Bvc2Vbe2d1ZXNzeSxubWlucn1d
XTsNCjwgCQkJCWd1ZXNzeT1NYXBbTWluLFRyYW5zcG9zZVt7Z3Vlc3N5LG5t
YXhyfV1dXTsNCjwgKCoJCQlQcmludFtib3VuZHMscm5nZmxhZyxndWVzc3ks
bm1pbnIsbm1heHJdOyopDQo8IAkJCW5ld3ZhbHMgPSB2YWxzIEBAIGd1ZXNz
eTsNCi0tLQ0KPiAJCQluZXd2YWxzID0gdmFscyBAQCAoZ3Vlc3MgKyBkZWx0
YWd1ZXNzKTsNCjM4NWQzNjYNCjwgCQkJDQozOTIsMzk0YzM3MywzNzUNCjwg
CQkJCWd1ZXNzID0gZ3Vlc3N5Ow0KPCAJCQkJdG1wY2hpID0gbmV3Y2hpOw0K
PCAJCQkJe2FscGhhLCBiZXRhfSA9IGNhbGNzdGVwW3Jlc3BvbnNlLCBud2Vp
Z2h0cywNCi0tLQ0KPiAJCQkJCWd1ZXNzID0gZ3Vlc3MgKyBkZWx0YWd1ZXNz
Ow0KPiAJCQkJCXRtcGNoaSA9IG5ld2NoaTsNCj4gCQkJCQl7YWxwaGEsIGJl
dGF9ID0gY2FsY3N0ZXBbcmVzcG9uc2UsIG53ZWlnaHRzLA0K
--2009596274-851401618-830962609=:11098--

==== [MESSAGE SEPARATOR] ====


  • Prev by Date: MultipleListPlot
  • Next by Date: Installation
  • Previous by thread: MultipleListPlot
  • Next by thread: Installation