Scilab Reference Manual |
---|
datafit — Parameter identification based on measured data
[p,err]=datafit([imp,] G [,DG],Z [,W],[contr],p0,[algo],[df0,[mem]], [work],[stop],['in'])
imp | : scalar argument used to set the trace mode. imp=0 nothing (execpt errors) is reported, imp=1 initial and final reports, imp=2 adds a report per iteration, imp>2 add reports on linear search. Warning, most of these reports are written on the Scilab standard output. | ||||||||||||
G | : function descriptor (e=G(p,z), e: ne x 1, p: np x 1, z: nz x 1) | ||||||||||||
DG | : partial of G wrt p function descriptor (optional; S=DG(p,z), S: ne x np) | ||||||||||||
Z | : matrix [z_1,z_2,...z_n] where z_i (nz x 1) is the ith measurement | ||||||||||||
W | : weighting matrix of size ne x ne (optional; defaut no ponderation) | ||||||||||||
contr | : 'b',binf,bsup with binf and bsup real vectors with same dimension as p0. binf and bsup are lower and upper bounds on p. | ||||||||||||
p0 | : initial guess (size np x 1) | ||||||||||||
algo | : 'qn' or 'gc' or 'nd' . This string stands for quasi-Newton (default), conjugate gradient or non-differentiable respectively. Note that 'nd' does not accept bounds on x ). | ||||||||||||
df0 | : real scalar. Guessed decreasing of f at first iteration. (df0=1 is the default value). | ||||||||||||
mem : | integer, number of variables used to approximate the Hessian, (algo='gc' or 'nd'). Default value is around 6. | ||||||||||||
stop | : sequence of optional parameters controlling the convergence of the algorithm. stop= 'ar',nap, [iter [,epsg [,epsf [,epsx]]]]
| ||||||||||||
"in" | : reserved keyword for initialization of parameters used when fun in given as a Fortran routine (see below). | ||||||||||||
p | : Column vector, optimal solution found | ||||||||||||
err | : scalar, least square error. |
datafit is used for fitting data to a model. For a given function G(p,z), this function finds the best vector of parameters p for approximating G(p,z_i)=0 for a set of measurement vectors z_i. Vector p is found by minimizing G(p,z_1)'WG(p,z_1)+G(p,z_2)'WG(p,z_2)+...+G(p,z_n)'WG(p,z_n)
datafit is an improved version of fit_dat.
deff('y=FF(x)','y=a*(x-b)+c*x.*x') X=[];Y=[]; a=34;b=12;c=14;for x=0:.1:3, Y=[Y,FF(x)+100*(rand()-.5)];X=[X,x];end Z=[Y;X]; deff('e=G(p,z)','a=p(1),b=p(2),c=p(3),y=z(1),x=z(2),e=y-FF(x)') [p,err]=datafit(G,Z,[3;5;10]) xset('window',0) xbasc(); plot2d(X',Y',-1) plot2d(X',FF(X)',5,'002') a=p(1),b=p(2),c=p(3);plot2d(X',FF(X)',12,'002') //same probleme with a known deff('e=G(p,z,a)','b=p(1),c=p(2),y=z(1),x=z(2),e=y-FF(x)') [p,err]=datafit(list(G,a),Z,[5;10]) a=34;b=12;c=14; deff('s=DG(p,z)','y=z(1),x=z(2),s=-[x-p(2),-p(1),x*x]') [p,err]=datafit(G,DG,Z,[3;5;10]) xset('window',1) xbasc(); plot2d(X',Y',-1) plot2d(X',FF(X)',5,'002') a=p(1),b=p(2),c=p(3);plot2d(X',FF(X)',12,'002')
<< dassl | derivative >> |