File: datafit.cat

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (100 lines) | stat: -rw-r--r-- 3,623 bytes parent folder | download
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