/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S R E L A T I V E S A L A D E R I V A T I O N F O R M E L L E */ /* D E S V A G U E S 1 D E J E E N E R : */ /* */ /* */ /* Author of '$xrs/vagues.11$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 20200319164619). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S T R O I S F O N C T I O N S ' F ' : */ /* */ /*************************************************************************************************************************************/ /* ATTENTION, il est imperatif que les fonctions derivables formellement soient definies */ /* dans un fichier a part afin qu'elles ne soient pas l'objet d'une double definition. En */ /* effet, on trouve dans 'v $xcc/cpp$Z' : */ /* */ /* $CA $module$w */ /* | $xcp/cpp$X ... -c$PASSE_D -e$PASSE_5 */ /* > $fichierR */ /* */ /* Ainsi, si par exemple la definition de 'Fx(u,v)' etait faite localement dans le */ /* fichier '$xrf/recursif.11$K', cette definition apparaitrait deux fois dans le fichier */ /* '$module$w' : une premiere fois en tete, provenant de '$PASSE_D' ou l'on ne trouve que */ /* les definitions du type '-define ...', puis une deuxieme fois a la suite, la ou se trouve */ /* concatene au fichier '$module$W' des '-define ...' le fichier '$fichierA' a compiler... */ /* Les definitions suivantes de {Fx,Fy,Fz} viennent despectivement de : */ /* */ /* omega = v + i.u */ /* */ /* puis : */ /* */ /* X --0--> sin(omega)/omega */ /* | */ /* --> developpement en serie */ /* | */ /* --> extraction de la partie reelle */ /* | */ /* --> integration par rapport a 'v'. */ /* */ /* */ /* Y --0--> cos(omega)/omega */ /* | */ /* --> developpement en serie */ /* | */ /* --> extraction de la partie reelle */ /* | */ /* --> integration par rapport a 'v'. */ /* */ /* */ /* Voici de plus les developpements en serie de 'cos(x)' et de 'sin(x)' : */ /* */ /* 0 2 4 6 */ /* x x x x */ /* cos(x) = ---- - ---- + ---- - ---- + ... */ /* 0! 2! 4! 6! */ /* */ /* */ /* 1 3 5 7 */ /* x x x x */ /* sin(x) = ---- - ---- + ---- - ---- + ... */ /* 1! 3! 5! 7! */ /* */ /* */ /* Voici enfin le binome de Newton utilise pour calculer les puissances de 'x=omega=v+i.u' : */ /* */ /* m=n */ /* ----- */ /* \ */ /* n \ m n-m m */ /* (a+b) = / C .a .b */ /* / n */ /* ----- */ /* m=0 */ /* */ -define _0 \ -_-_-_- ZERO -define _1 \ -_-_-_- UN -define _2 \ -_-_-_- DEUX -define _3 \ -_-_-_- TROIS -define _4 \ -_-_-_- QUATRE -define _5 \ -_-_-_- CINQ -define _6 \ -_-_-_- SIX -define _7 \ -_-_-_- SEPT -define PLUS____ \ -_-_-_- NEUT(FU) -define MOINS___ \ -_-_-_- NEGA(FU) /* Afin d'homogeneiser les tabulations... */ -define EXPi(u,exposant) \ -_-_-_- MUL2(PUIX(Carre_de_i__Complexe,MOIT(exposant)),PUIX(u,exposant)) /* Afin de calculer la valeur de 'i' eleve a une puissance paire que l'on divise par 2 */ /* (via le 'MOIT(...)') afin de prendre en compte qu'en fait ce que l'on calcule est : */ /* */ /* exposant */ /* i */ /* */ /* soit encore : */ /* exposant */ /* ---------- */ /* 2 */ /* 2 */ /* i */ /* */ /* lorsque l'exposant est pair, ce qui est le cas ici... */ -define Fx_VaguesDeJeener_1(u,v) \ -_-_-_- MUL2(PUIX(NEGA(FU),MUL2(parametre_v,parametre_u)) \ -_-_-_- ,LIZ4(PLUS____,DIVI(LIZ1(parametre_a,MUL3(COnm(_0,_0),p_PUIX(v,_0),EXPi(u,_0)) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_1)) \ -_-_-_- ) \ -_-_-_- ,MOINS___,DIVI(LIZ2(parametre_b,MUL3(COnm(_2,_0),p_PUIX(v,_2),EXPi(u,_0)) \ -_-_-_- ,parametre_c,MUL3(COnm(_2,_2),p_PUIX(v,_0),EXPi(u,_2)) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_3)) \ -_-_-_- ) \ -_-_-_- ,PLUS____,DIVI(LIZ3(parametre_d,MUL3(COnm(_4,_0),p_PUIX(v,_4),EXPi(u,_0)) \ -_-_-_- ,parametre_e,MUL3(COnm(_4,_2),p_PUIX(v,_2),EXPi(u,_2)) \ -_-_-_- ,parametre_f,MUL3(COnm(_4,_4),p_PUIX(v,_0),EXPi(u,_4)) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_5)) \ -_-_-_- ) \ -_-_-_- ,MOINS___,DIVI(LIZ4(parametre_g,MUL3(COnm(_6,_0),p_PUIX(v,_6),EXPi(u,_0)) \ -_-_-_- ,parametre_h,MUL3(COnm(_6,_2),p_PUIX(v,_4),EXPi(u,_2)) \ -_-_-_- ,parametre_i,MUL3(COnm(_6,_4),p_PUIX(v,_2),EXPi(u,_4)) \ -_-_-_- ,parametre_j,MUL3(COnm(_6,_6),p_PUIX(v,_0),EXPi(u,_6)) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_7)) \ -_-_-_- ) \ -_-_-_- ) \ -_-_-_- ) /* Definition de la fonction F (u,v). */ /* x */ /* */ /* On notera le '(-1)^parametre_u' qui semble ne servir a rien, mais en fait il permet */ /* d'assembler cote a cote plusieurs elements ('v $xrs/vagues.11$K DoIn.parametre_u.')... */ /* */ /* Le 20200326095643, 'parametre_u' a ete "complete" par 'parametre_v' qui permet, s'il a */ /* une valeur nulle, d'inhiber l'effet d'inversion de 'parametre_u'... */ -define Fy_VaguesDeJeener_1(u,v) \ -_-_-_- LIZ4(PLUS____,DIVI(LIZ1(parametre_k,MOIT(LOGX(ADD2(CModule_2D(v,u),parametre_l))) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_0)) \ -_-_-_- ) \ -_-_-_- ,MOINS___,DIVI(LIZ1(parametre_m,MUL3(COnm(_1,_0),p_PUIX(v,_1),EXPi(u,_0)) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_2)) \ -_-_-_- ) \ -_-_-_- ,PLUS____,DIVI(LIZ2(parametre_n,MUL3(COnm(_3,_0),p_PUIX(v,_3),EXPi(u,_0)) \ -_-_-_- ,parametre_p,MUL3(COnm(_3,_2),p_PUIX(v,_1),EXPi(u,_2)) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_4)) \ -_-_-_- ) \ -_-_-_- ,MOINS___,DIVI(LIZ3(parametre_q,MUL3(COnm(_5,_0),p_PUIX(v,_5),EXPi(u,_0)) \ -_-_-_- ,parametre_r,MUL3(COnm(_5,_2),p_PUIX(v,_3),EXPi(u,_2)) \ -_-_-_- ,parametre_s,MUL3(COnm(_5,_4),p_PUIX(v,_1),EXPi(u,_4)) \ -_-_-_- ) \ -_-_-_- ,FLOT(FACT(_6)) \ -_-_-_- ) \ -_-_-_- ) /* Definition de la fonction F (u,v). */ /* y */ /* */ /* Le 'MOIT(LOGX(...))' vient de l'integration en 'v' de la Partie Reelle de : */ /* */ /* 1 v - i.u */ /* --------- = --------- */ /* v + i.u 2 2 */ /* v + u */ /* */ /* soit : */ /* */ /* v */ /* --------- */ /* 2 2 */ /* v + u */ /* */ /* le changement de variable 'w=v^2 + u^2' donnant par integration en 'w' ('u^2' etant */ /* alors une constante) avec 'dw=2.v.dv' : */ /* */ /* 1 2 2 */ /* ---.log(v + u ) */ /* 2 */ /* */ -define Fz_VaguesDeJeener_1(u,v) \ -_-_-_- LIZ2(parametre_t,Theta_2D(u,v) \ -_-_-_- ,parametre_u,PI \ -_-_-_- ) /* Definition de la fonction F (u,v). */ /* z */ /* */ /* On notera les correspondances suivantes dans un plan (d'apres 'omega = v + i.u') : */ /* */ /* v --> coordonnee X */ /* u --> coordonnee Y */ /* */ /* Or c'est 'atan(v,u)' que l'on calcule ici et non pas 'atan(u,v)'. En effet, voici les */ /* definitions utilisees : */ /* */ /* Theta_2D(x,y) */ /* | */ /* ----> Angle1_2D(x,y) */ /* Angle1_2D(X1,X2) */ /* | */ /* ----> gaAngle1_2D(FX1origine,FX2origine,X1,X2) */ /* | */ /* ----> gAngle1_2D(ATAN,O1,O2,X1,X2) */ /* | */ /* ----> arc_tangente(SOUS(X2,O2),SOUS(X1,O1)) */ /* */ /* /\ /\ */ /* || || */ /* | ---------- | */ /* ------------ */ /* */ /* ATTENTION : 'X1' et 'X2' sont permutes */ /* */ /* (dans 'v $ximD/definit.1$DEF Theta_2D') soit donc : */ /* */ /* Theta_2D(x,y)=ATAN(y,x) */ /* */ /* et donc : */ /* */ /* Theta_2D(u,v)=ATAN(v,u) */ /* */ /* Mais la definition de 'Fz_VaguesDeJeener_1(...)' est finalement arbitraire... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N I T I A L I S A T I O N S R E L A T I V E S A L A P S E U D O - P R O J E C T I O N : */ /* */ /*************************************************************************************************************************************/ -define Pxyz_VaguesDeJeener_1 \ -_-_-_- Bblock \ -_-_-_- BLOC(VIDE;); \ -_-_-_- Eblock /* Initialisations specifiques a cette surface destinees a permettre la reinjection des */ /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans */ /* 'v $xrs/project2D.11$K'... */