Re: Special Nonlinear Fitting
- To: mathgroup at smc.vnet.net
- Subject: [mg2395] Re: [mg2368] Special Nonlinear Fitting
- From: hwalker at UH.EDU (Hugh Walker)
- Date: Tue, 31 Oct 1995 23:24:33 -0500
In [mg2368], Eric Lindahl (f91el at efd.lth.se) writes: <I need to do a nonlinear fitting of data to a function, where I can't get an explicit expression for the functions value.Let me give you an example:Assume I have the data point as pairs {x,y}. I want to "solve" the following relationship for the parameters a and b: Y^2/X*f[Y^2/(X*a)]=b*given function of X. with f[z]=z/Sqrt[1+z^2]... Is there any procedure capable of this? I must be able to enter an equation as the model, and state that "Y" is the data value at each point.> ============================= This may be helpful. Write your fitting function in the form y = G(x,y,a,b). I will assume G is listable, and also assume data = {xList,yList) is available from experiment. The following fragment of code gets the job done: .... g := G[x,y,a,b]; del = yList - g/.{x->xList, y->yList}; FindMinimum[( (del.del)/.{a->afit,b->bfit} )//Evaluate, {afit, atry},{bfit,btry} .... This seems to work well on simple cases such I have tried such as y = x^a Exp[-b y]. As proposed, the final step uses the Newton-Raphson method. If G's Jacobian is cumbersome or impossible to compute, then go the secant route by replacing the last live with FindMinimum[(del2/.{a->afit,b->bfit})//Evaluate, {afit, atry1,atry2},{bfit,btry1,btry2} Hugh Walker Physics Univ of Houston