1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
datafit Scilab Group Scilab Function datafit
NAME
datafit - Parameter identification based on measured data
CALLING SEQUENCE
[p,err]=datafit([imp,] G [,DG],Z [,W],[contr],p0,[algo],[df0,[mem]],
[work],[stop],['in'])
PARAMETERS
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]]]]
"ar" : reserved keyword for stopping rule selection defined as
follows:
nap : maximum number of calls to fun allowed.
iter : maximum number of iterations allowed.
epsg : threshold on gradient norm.
epsf : threshold controlling decreasing of f
epsx : threshold controlling variation of x. This vector (possibly
matrix) of same size as x0 can be used to scale x.
"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.
DESCRIPTION
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.
EXAMPLE
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')
SEE ALSO
optim, leastsq
|