/*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S R E L A T I V E S A L ' A T T R A C T E U R D E L O R E N Z : */ /* */ /* */ /* Author of '$xrk/lorenz.11$I' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 1996??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E L ' A T T R A C T E U R D E L O R E N Z : */ /* */ /* */ /* Definition : */ /* */ /* Il est classiquement defini par */ /* le systeme d'equations differentielles : */ /* */ /* dx */ /* ---- = -10.x + 10.y */ /* dt */ /* */ /* dy */ /* ---- = 28.x - y - x.z */ /* dt */ /* */ /* dz 8 */ /* ---- = - ---.z + x.y */ /* dt 3 */ /* */ /* ce que l'on peut generaliser en : */ /* */ /* dx */ /* ---- = (X .x + X .y + X .z) + (X .x.y + X .y.z + X .z.x) + (X .x.y.z) = F (x,y,z) */ /* dt x y z xy yz zx xyz x */ /* */ /* dy */ /* ---- = (Y .x + Y .y + Y .z) + (Y .x.y + Y .y.z + Y .z.x) + (Y .x.y.z) = F (x,y,z) */ /* dt x y z xy yz zx xyz y */ /* */ /* dz */ /* ---- = (Z .x + Z .y + Z .z) + (Z .x.y + Z .y.z + Z .z.x) + (Z .x.y.z) = F (x,y,z) */ /* dt x y z xy yz zx xyz z */ /* */ /* */ /*************************************************************************************************************************************/ #define CXx \ NEGA(FLOT(DIX)) #define CXy \ NEUT(FLOT(DIX)) #define CXz \ FZERO #define CXxy \ FZERO #define CXyz \ FZERO #define CXzx \ FZERO #define CXxyz \ FZERO DEFV(Local,DEFV(Float,INIT(Xx,CXx))); DEFV(Local,DEFV(Float,INIT(Xy,CXy))); DEFV(Local,DEFV(Float,INIT(Xz,CXz))); DEFV(Local,DEFV(Float,INIT(Xxy,CXxy))); DEFV(Local,DEFV(Float,INIT(Xyz,CXyz))); DEFV(Local,DEFV(Float,INIT(Xzx,CXzx))); DEFV(Local,DEFV(Float,INIT(Xxyz,CXxyz))); /* Definition des coefficients de 'dx'. */ #define CYx \ FLOT(DOUB(QUATORZE)) #define CYy \ NEGA(FU) #define CYz \ FZERO #define CYxy \ FZERO #define CYyz \ FZERO #define CYzx \ NEGA(FU) #define CYxyz \ FZERO DEFV(Local,DEFV(Float,INIT(Yx,CYx))); DEFV(Local,DEFV(Float,INIT(Yy,CYy))); DEFV(Local,DEFV(Float,INIT(Yz,CYz))); DEFV(Local,DEFV(Float,INIT(Yxy,CYxy))); DEFV(Local,DEFV(Float,INIT(Yyz,CYyz))); DEFV(Local,DEFV(Float,INIT(Yzx,CYzx))); DEFV(Local,DEFV(Float,INIT(Yxyz,CYxyz))); /* Definition des coefficients de 'dy'. */ #define CZx \ FZERO #define CZy \ FZERO #define CZz \ NEGA(DIVI(FLOT(HUIT),FLOT(TROIS))) #define CZxy \ FU #define CZyz \ FZERO #define CZzx \ FZERO #define CZxyz \ FZERO DEFV(Local,DEFV(Float,INIT(Zx,CZx))); DEFV(Local,DEFV(Float,INIT(Zy,CZy))); DEFV(Local,DEFV(Float,INIT(Zz,CZz))); DEFV(Local,DEFV(Float,INIT(Zxy,CZxy))); DEFV(Local,DEFV(Float,INIT(Zyz,CZyz))); DEFV(Local,DEFV(Float,INIT(Zzx,CZzx))); DEFV(Local,DEFV(Float,INIT(Zxyz,CZxyz))); /* Definition des coefficients de 'dz'. */ #define CX0 \ FRA10(FRA10(FU)) \ /* ATTENTION, sur 'SYSTEME_FX2800_CONCENTRIX_SCC', ecrire 'FRA10(FRA10(FU))' (c'est-a-dire */ \ /* '(((1.0)/10)/10)') et '0.01' n'est pas equivalent, et l'on tombe sur le probleme de la */ \ /* sensibilite aux conditions initiales. En effet, grace au programme 'v $xtc/lorenz.02$c', */ \ /* on trouve : */ \ /* */ \ /* (((1.0)/10)/10) ==> CX = +2.5811201 CY = +4.3784782 CZ = +13.494037 */ \ /* 10000 10000 10000 */ \ /* */ \ /* 0.01 ==> CX = -0.3561074 CY = -1.5817687 CZ = +20.345352 */ \ /* 10000 10000 10000 */ \ /* */ #define CY0 \ FRA10(FRA10(FU)) \ /* ATTENTION, sur 'SYSTEME_FX2800_CONCENTRIX_SCC', ecrire 'FRA10(FRA10(FU))' (c'est-a-dire */ \ /* '(((1.0)/10)/10)') et '0.01' n'est pas equivalent, et l'on tombe sur le probleme de la */ \ /* sensibilite aux conditions initiales. En effet, grace au programme 'v $xtc/lorenz.02$c', */ \ /* on trouve : */ \ /* */ \ /* (((1.0)/10)/10) ==> CX = +2.5811201 CY = +4.3784782 CZ = +13.494037 */ \ /* 10000 10000 10000 */ \ /* */ \ /* 0.01 ==> CX = -0.3561074 CY = -1.5817687 CZ = +20.345352 */ \ /* 10000 10000 10000 */ \ /* */ #define CZ0 \ FRA10(FRA10(FU)) \ /* ATTENTION, sur 'SYSTEME_FX2800_CONCENTRIX_SCC', ecrire 'FRA10(FRA10(FU))' (c'est-a-dire */ \ /* '(((1.0)/10)/10)') et '0.01' n'est pas equivalent, et l'on tombe sur le probleme de la */ \ /* sensibilite aux conditions initiales. En effet, grace au programme 'v $xtc/lorenz.02$c', */ \ /* on trouve : */ \ /* */ \ /* (((1.0)/10)/10) ==> CX = +2.5811201 CY = +4.3784782 CZ = +13.494037 */ \ /* 10000 10000 10000 */ \ /* */ \ /* 0.01 ==> CX = -0.3561074 CY = -1.5817687 CZ = +20.345352 */ \ /* 10000 10000 10000 */ \ /* */ #define DCT \ FRA10(FRA10(FU)) \ /* ATTENTION, sur 'SYSTEME_FX2800_CONCENTRIX_SCC', ecrire 'FRA10(FRA10(FU))' (c'est-a-dire */ \ /* '(((1.0)/10)/10)') et '0.01' n'est pas equivalent, et l'on tombe sur le probleme de la */ \ /* sensibilite aux conditions initiales. En effet, grace au programme 'v $xtc/lorenz.02$c', */ \ /* on trouve : */ \ /* */ \ /* (((1.0)/10)/10) ==> CX = +2.5811201 CY = +4.3784782 CZ = +13.494037 */ \ /* 10000 10000 10000 */ \ /* */ \ /* 0.01 ==> CX = -0.3561074 CY = -1.5817687 CZ = +20.345352 */ \ /* 10000 10000 10000 */ \ /* */ DEFV(Local,DEFV(Float,INIT(dct,DCT))); /* Definition de 'dt'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 ' : */ /* */ /*************************************************************************************************************************************/ #define Fx(cx,cy,cz,t) \ ADD3(LIZ3(Xx,cx,Xy,cy,Xz,cz) \ ,LIZ3(Xxy,MUL2(cx,cy),Xyz,MUL2(cy,cz),Xzx,MUL2(cz,cx)) \ ,MUL2(Xxyz,MUL3(cx,cy,cz)) \ ) \ /* Definition de la fonction F (x,y,z). */ \ /* x */ #define Fy(cx,cy,cz,t) \ ADD3(LIZ3(Yx,cx,Yy,cy,Yz,cz) \ ,LIZ3(Yxy,MUL2(cx,cy),Yyz,MUL2(cy,cz),Yzx,MUL2(cz,cx)) \ ,MUL2(Yxyz,MUL3(cx,cy,cz)) \ ) \ /* Definition de la fonction F (x,y,z). */ \ /* y */ #define Fz(cx,cy,cz,t) \ ADD3(LIZ3(Zx,cx,Zy,cy,Zz,cz) \ ,LIZ3(Zxy,MUL2(cx,cy),Zyz,MUL2(cy,cz),Zzx,MUL2(cz,cx)) \ ,MUL2(Zxyz,MUL3(cx,cy,cz)) \ ) \ /* Definition de la fonction F (x,y,z). */ \ /* z */