$$$$ AJUSTE NOTICE CHAT 11/09/12 21:15:05 7124 DATE 11/09/12 procedure AJUSTE Voir aussi : MOCA LEVM ---------------- Q P = AJUSTE TAB1 ; TAB1.'X' (TAB1.'PMIN') TAB1.'F' (TAB1.'PMAX') TAB1.'K' (TAB1.'PRECISION') TAB1.'L' (TAB1.'MXTER') (TAB1.'POIDS') (TAB1.'MESSAGES') (TAB1.'IMPRESSION') Description : ------------- Let F(x,y,z,..,p1,..pk) be a function explicited as follows: F(x,p) = q1 * f1(x,y,z,.,p1,..,pk) + q2 * f2(x,y,z,.,p1,..,pk) + ... + ql * fl(x,y,z,.,p1,..,pk) + g(x,y,z,.,p1,..,pk) qi (i=1,l) are linear parameters pj (j=1,k) are non linear parameters The procedure adjustes these different parameters so that the function is best represented in a series of N couples ( (x,y,z,...);Fdi (x,y,z,..) ) sets defined by the user. In fact, the following function is minimized: G = [ (poids(i) * ( F(x,p) - Fdi(x,y,z..) )**2 ] summation with i=1,N Data : ------ TAB1.'X' : TABLE indexed by integers i=1,N who contains the LISTREEL(s) x,y,z,..... TAB1.'F' : values of F(x,y,z...) to adjust to (LISTREEL). TAB1.'K' : number of non linear parameters (ENTIER). TAB1.'L' : number of linear parameters (ENTIER). TAB1.'MESSAGES' : level of information (default=0 : none) 1 -> results, 2 -> iterations TAB1.'IMPRESSION' : frequence of printing when MESSAGES=2 (type ENTIER, default : every 20 iterations). TAB1.'PMIN' : minimum values of p (LISTREEL, necessary si K > 0). TAB1.'PMAX' : maximum values of p (LISTREEL, necessary if K > 0). TAB1.'PRECISION' : (LISTREEL, utile si K>0) : precision of convergence criterium for the K non linear parameters (default=1.e-7) TAB1.'MXTER' : maximum number of iterations (ENTIER, useful if K>1, default=100). TAB1.'POIDS' : weight to be given for each given values of Fdi (LISTREEL, default=1.) TAB1.'NOM_FCT': name of the procedure that computes fi(x,p) and g(x,p) (MOT, default='FCT'). TAB1.'NOM_DERI': name of the procedure that computes the f_i and g derivatives with respect to p_j (MOT, default='DERI'). Output : -------- Q and P are objects LISTREEL which contains values of parameters qi and pi. Use : ----- Before using this AJUSTE procedure, the user must create two procedures : - procedure FCT : Its goal is to calculate the function to adjust knowing the values of the abscissas x,y,z,.., and this for a given set of parameters p. In fact, the procedure is asked to calculate the functions f1,f2,..,fl and the function g. For each function fi, the procedure calculates as many values as there are in x,y,z,.. The results must be presented as a TABLE object. As entry argument, FCT will receive the TABLE object which is in TAB1.'X', as well as the set of current values of p, presented in a LISTREEL object. The output TABLE object must be presented in the following way: tbfonc.'F'. i = listreel of the fi values tbfonc.'G' = listreel the g value The linear parameters qi dont have to be written down. - procedure DERI : It builds a TABLE object containing a list of LISTREEL objects which are the values of functions f1,f2,..,fl and g derivated with respect to the nonlinear parameters pj for each values of x,y,z... and p. As input, DERI will receive the TABLE object in TAB1.'X', as well as the LISTREEL containing p. As output, the TABLE object must be presented as follows: tbderi.'F'. j . i = LISTREEL of the values of dfi/dpj tbderi.'G'. j = LISTREEL of the values of dg/dpj Remarks : --------- - The abscissas being in a LISTREEL, the constants must be expressed as a LISTREEL for algebraic operations. ex: f1(x)=x+1 will be f1(x)=x+(prog N*1); N being the dimension of x. - Be aware that sinusoidal functions use operands expressed in degrees. - Other names that default can be used for procedures, by completing the 'NOM_FCT' and 'NOM_DERI' indexes. Be sure to precede them by the 'MOT' operator. - examples in: ajuste1.dgibi ajuste2.dgibi identifi.dgibi
© Cast3M 2003 - All rights reserved.
Disclaimer