#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         A I D E   A   L A   R E C H E R C H E   D E   C A D R A G E S   I N T E R E S S A N T S                                     #
#         P O U R   ' $xrk/lyapunov.01$K '   P A R   U N   P R O C E D E   D I C H O T O M I Q U E  :                                 #
#                                                                                                                                     #
#                                                                                                                                     #
#                   source    $xrk/lyapunov.01$Y                                                                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Nota :                                                                                                                      #
#                                                                                                                                     #
#                     Etant donne que le 'C-Shell' ne sait                                                                            #
#                   pas manipuler de constantes flottantes                                                                            #
#                   par 'set' et '@', les arguments flottants                                                                         #
#                   de '$xrk/lyapunov.01$X' sont decomposes en                                                                        #
#                   une partie entiere ('LentiereX' et 'LentiereY')                                                                   #
#                   et une partie decimale ('Lxbg', 'Lybg', 'Lxhd' et 'Lyhd').                                                        #
#                   Seules les parties decimales, pour des raisons evidentes                                                          #
#                   de simplicite, sont accessibles dans le processus de                                                              #
#                   de decoupage dichotomique...                                                                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xrk/lyapunov.01$Y' :                                                                                            #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

Suq
                                        # Pour aller vite...                                                                          #

#######################################################################################################################################
#                                                                                                                                     #
#         D E F I N I T I O N   D E S   V A R I A B L E S   D E   C O N F I G U R A T I O N  :                                        #
#                                                                                                                                     #
#                                                                                                                                     #
if        ($?Literations == $NEXIST) then
          set       Literations=100
                                        # Lorsque le nombre d'iterations n'est pas definie, on force une valeur utile...              #
else
endif

if        ($?Lsuite == $NEXIST) then
          set       Lsuite="222222111111"
                                        # Lorsque la suite des permutations de (R1,R2,R3) n'est pas definie, on force une valeur      #
                                        # sympathique...                                                                              #
else
endif

if        ($?LentiereX == $NEXIST) then
          set       LentiereX=3
                                        # Lorsque la partie entiere des abscisses n'est pas definie, on force une valeur sympathique. #
else
endif

if        ($?LentiereY == $NEXIST) then
          set       LentiereY=3
                                        # Lorsque la partie entiere des ordonnees n'est pas definie, on force une valeur sympathique. #
else
endif

if        ($?Lxbg == $NEXIST) then
          set       Lxbg=000000000
                                        # Lorsque la partie decimale de l'abscisse bas-gauche n'existe pas, on force une valeur       #
                                        # sympathique...                                                                              #
else
endif

if        ($?Lybg == $NEXIST) then
          set       Lybg=500000000
                                        # Lorsque la partie decimale de l'ordonnee bas-gauche n'existe pas, on force une valeur       #
                                        # sympathique...                                                                              #
else
endif

if        ($?Lxhd == $NEXIST) then
          set       Lxhd=350000000
                                        # Lorsque la partie decimale de l'abscisse haut-droit n'existe pas, on force une valeur       #
                                        # sympathique...                                                                              #
else
endif

if        ($?Lyhd == $NEXIST) then
          set       Lyhd=850000000
                                        # Lorsque la partie decimale de l'ordonnee haut-droit n'existe pas, on force une valeur       #
                                        # sympathique...                                                                              #
else
endif

#######################################################################################################################################
#                                                                                                                                     #
#         D E F I N I T I O N   D E S   C O M M A N D E S   D E   C A L C U L  :                                                      #
#                                                                                                                                     #
#                                                                                                                                     #
alias     Lyapunov  'set                 xbg=\!:1 ; set ybg=\!:3 ; set xhd=\!:2 ; set yhd=\!:4                                    ;    \\
                     $xrk/lyapunov.01$X  n=1 iterations=$Literations suite="$Lsuite"                                                   \\
                                         xbgD=$LentiereX.$xbg ybgD=$LentiereY.$ybg xhdD=$LentiereX.$xhd yhdD=$LentiereY.$yhd           \\
                                         xbgA=$LentiereX.$xbg ybgA=$LentiereY.$ybg xhdA=$LentiereX.$xhd yhdA=$LentiereY.$yhd           \\
                                         $formatI                                                                                 |    \\
                     $xci/display$X      p=palettes/cercle.22 $formatI                                                            ;    \\
                     unset               xbg ybg xhd yhd'
                                        # Commande destinee a montrer un ensemble de lyapunov dans une certaine fenetre...            #

alias     Ldicho    '@         dxgd = $Lxhd - $Lxbg ; @         dxgd = $dxgd / 2                                                  ;    \\
                     if        ($dxgd == 0) echo "ATTENTION, $K_QS""dxgd""$K_QS"" est devenu nul."                                ;    \\
                     @         dybh = $Lyhd - $Lybg ; @         dybh = $dybh / 2                                                  ;    \\
                     if        ($dybh == 0) echo "ATTENTION, $K_QS""dybh""$K_QS"" est devenu nul."                                ;    \\
                     if        ($dxgd != $dybh) echo "ATTENTION, la fenetre courante est non carree."'
                                        # Commande destinee a effectuer le decoupage dichotomique de la fenetre courante...           #
alias     Lgauche   '@         Lxhd = $Lxhd - $dxgd'
                                        # Commande destinee a se placer dans la partie gauche de la fenetre courante...               #
alias     Ldroite   '@         Lxbg = $Lxbg + $dxgd'
                                        # Commande destinee a se placer dans la partie droite de la fenetre courante...               #
alias     Lbas      '@         Lyhd = $Lyhd - $dybh'
                                        # Commande destinee a se placer dans la partie basse de la fenetre courante...                #
alias     Lhaut     '@         Lybg = $Lybg + $dybh'
                                        # Commande destinee a se placer dans la partie basse de la fenetre courante...                #

alias     Lbg       'Ldicho                                                                                                       ;    \\
                     Lgauche                                                                                                      ;    \\
                     Lbas                                                                                                         ;    \\
                     Lyapunov  $Lxbg $Lxhd $Lybg $Lyhd                                                                                 \\
                     unset     dxgd dybh'
                                        # Commande destinee a montrer un ensemble de lyapunov dans le coin bas-gauche de la fenetre   #
                                        # courante.                                                                                   #
alias     Lbd       'Ldicho                                                                                                       ;    \\
                     Ldroite                                                                                                      ;    \\
                     Lbas                                                                                                         ;    \\
                     Lyapunov  $Lxbg $Lxhd $Lybg $Lyhd                                                                                 \\
                     unset     dxgd dybh'
                                        # Commande destinee a montrer un ensemble de lyapunov dans le coin bas-droite de la fenetre   #
                                        # courante.                                                                                   #
alias     Lhd       'Ldicho                                                                                                       ;    \\
                     Ldroite                                                                                                      ;    \\
                     Lhaut                                                                                                        ;    \\
                     Lyapunov  $Lxbg $Lxhd $Lybg $Lyhd                                                                                 \\
                     unset     dxgd dybh'
                                        # Commande destinee a montrer un ensemble de lyapunov dans le coin haut-droite de la fenetre  #
                                        # courante.                                                                                   #
alias     Lhg       'Ldicho                                                                                                       ;    \\
                     Lgauche                                                                                                      ;    \\
                     Lhaut                                                                                                        ;    \\
                     Lyapunov  $Lxbg $Lxhd $Lybg $Lyhd                                                                                 \\
                     unset     dxgd dybh'
                                        # Commande destinee a montrer un ensemble de lyapunov dans le coin haut-gauche de la fenetre  #
                                        # courante.                                                                                   #

#######################################################################################################################################
#                                                                                                                                     #
#         D E F I N I T I O N   D E S   C O M M A N D E S   D E   G E S T I O N  :                                                    #
#                                                                                                                                     #
#                                                                                                                                     #
alias     Linit     'unset     Lxbg Lxhd Lybg Lyhd                                                                                ;    \\
                     source    $xrk/lyapunov.01$Y'
                                        # Commande destinee a reinitialiser le processus...                                           #
alias     Ledit     'saut                                                                                                         ;    \\
                     Echo      "Lhg   Lhd" ; Echo      "Lbg   Lbd"                                                                ;    \\
                     Echo      "xbgA=$LentiereX.$Lxbg ybgA=$LentiereY.$Lybg xhdA=$LentiereX.$Lxhd yhdA=$LentiereY.$Lyhd"          ;    \\
                     echo      "set       Lxbg=$Lxbg" ; echo      "set       Lybg=$Lybg"                                          ;    \\
                     echo      "set       Lxhd=$Lxhd" ; echo      "set       Lyhd=$Lyhd"                                          ;    \\
                     Lyapunov  $Lxbg $Lxhd $Lybg $Lyhd'
                                        # Commande destinee a editer l'etat courant du processus sous trois formes differentes :      #
                                        #                                                                                             #
                                        # 1-un petit tableau :                                                                        #
                                        #                                       Lhg   Lhd                                             #
                                        #                                                                                             #
                                        #                                       Lbg   Lbd                                             #
                                        #                                                                                             #
                                        # qui permet, par des "couper-coller", de choisir la commande suivante (on notera que les     #
                                        # quatre commandes sont disposees correctement dans le plan [OX,OY])...                       #
                                        #                                                                                             #
                                        # 2-edition des parametres d'Arrivee a '$xrk/lyapunov.01$X' sous la forme :                   #
                                        #                                                                                             #
                                        #                                       xbgA=... ybgA=... xhdA=... yhdA=...                   #
                                        #                                                                                             #
                                        # 3-edition de commandes au 'C-Shell' de facon a permettre eventuellement un retour ulterieur #
                                        # a l'etat present :                                                                          #
                                        #                                                                                             #
                                        #                                       set       Lxbg=...                                    #
                                        #                                       set       Lybg=...                                    #
                                        #                                       set       Lxhd=...                                    #
                                        #                                       set       Lyhd=...                                    #
                                        #                                                                                             #
                                        # en "coupant-collant" ces quatre 'set's.                                                     #

alias     Lraz      'unset     Literations Lsuite LentiereX LentiereY                                                             ;    \\
                     unset     Lxbg Lxhd Lybg Lyhd                                                                                ;    \\
                     unalias   Lyapunov                                                                                           ;    \\
                     unalias   Ldicho Lgauche Ldroite Lbas Lhaut                                                                  ;    \\
                     unalias   Lbg Lbd Lhd Lhg                                                                                    ;    \\
                     unalias   Linit Ledit Lraz'
                                        # Commande destinee a annuler le processus...                                                 #



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.