#######################################################################################################################################
# #
# E T U D E D E L A C O N J E C T U R E D E S Y R A C U S E #
# E N R E P R E S E N T A T I O N B I D I M E N S I O N N E L L E : #
# #
# #
# Author of '$xiirk/.SYRA.F1.1.$U' : #
# #
# Jean-Francois Colonna (LACTAMME, 20170918103539). #
# #
#######################################################################################################################################
$Z setParam _____FormatA "Sud"
$Z # Parametre introduit le 20170920132815... #
$Z setParam _____Derniere `GetParam $xci/valeurs_Syra$X derniere`
$Z # Parametre introduit le 20170920135059... #
$Z setParam _____FormatR "Sdu"
$Z # Parametre introduit le 20170920132815... #
$Z setParam _____Palette $xiP/cercle.K3
$Z # Parametre introduit le 20170923094611... #
$Z # #
$Z # On notera que cette palette (contrairement a 'v $xiio/MIRE p=$xiP/cercle.K2') n'introduit #
$Z # aps de niveaux noirs... #
$Z setParam _____Mode 1
$Z # Parametre introduit le 20170923094611... #
$Z # #
$Z # On notera le choix du mode "0" par defaut qui est le plus simpliste puisqu'il fonctionne #
$Z # par duplication et non pas interpolation et ce a cause des extremites. En effet, par #
$Z # a droite ou l'on expere en general des niveaux extremes, etant donne que le niveau #
$Z # hors image est 'NOIR', il y a alors interpolation vers le 'NOIR' et donc les niveaux #
$Z # aux extremites sont 'NOIR's... #
#20170920132815____:$Z Sud #
$Z eval "$_____FormatA"
$Z set SaVe_dimX=$dimX
$Z set SaVe_dimY=$dimY
$Z set NoMbRe_SuItEs=$dimY
$Z FilSTmpB FSyracuse
$Z execRVB $xci/init$X niveau=$NOIR \
$Z R=$_____ImageR%s \
$Z $formatI
#20170920135059____:$Z $xrk/Syracuse.21$Z $NoMbRe_SuItEs "04" | \ #
#20170920135059____:$Z $SE -e "s/^0*//" \ #
#20170920135059____:$Z -e "s/\( \)0*/\1/g" \ #
#20170920135059____:$Z >> $FSyracuse #
$Z # On notera le format "04" afin d'assurer un tri correct ('v $xrk/Syracuse.21$Z SOR'), mais #
$Z $xrk/Syracuse.21$Z $NoMbRe_SuItEs "04" "$SOR" $Xmax | \
$Z $SE -e "s/^0*//" \
$Z -e "s/\( \)0*/\1/g" \
$Z >> $FSyracuse
$Z # On notera le format "04" afin d'assurer un tri correct ('v $xrk/Syracuse.21$Z SOR'), mais #
$Z # ensuite les "0"s de tete des nombres doivent etre elimines si l'on veut que par la suite #
$Z # les 'calcul's se deroulent bien... #
$Z # #
$Z # On notera qu'on choisit '$Xmax' (et non pas '$dimX') car, en effet, par defaut, on a #
$Z # #
$Z # premiere=0 #
$Z # #
$Z # dans 'v $xci/valeurs_Syra$X premiere'... #
$Z $CA $FSyracuse | \
$Z $R " " "$K_NL" | \
$Z $SOR -n -u \
$Z > $FSyracuse.trie
$Z set MiNiMuM=`$CA $FSyracuse.trie | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI formater=VRAI signe="$K_VIDE"`
$Z set MaXiMuM=`$CA $FSyracuse.trie | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI formater=VRAI signe="$K_VIDE"`
$Z if ($EXIST) then
$Z # Afin de pouvoir inhiber facilement l'edition qui suit... #
$Z echo "min({U(n)})=$MiNiMuM"
$Z echo "max({U(n)})=$MaXiMuM"
$Z # Edition introduite le 20170925130456... #
$Z else
$Z endif
$Z FilSTmpB FPalette
$Z execRVB $xrv/interpole.11$Z $_____Palette%s $FPalette%s $MaXiMuM $_____Mode
$Z set LiStE_ROUGE=`$CA $FPalette$ROUGE`
$Z set LiStE_VERTE=`$CA $FPalette$VERTE`
$Z set LiStE_BLEUE=`$CA $FPalette$BLEUE`
$Z FilSTmpE FPalette
$Z # Le "-$TrAnS" dans '$FaCtEuR' est destine a permettre le '+$DiViSeUr' dans la definition #
$Z # des trois niveaux {$RoUgE,$VeRtE,$BlEuE}... #
#20170923093940____:$Z @ DiViSeUrD = $DiViSeUr * $DiViSeUr #
#20170923093940____:$Z @ TrAnSD = $TrAnS * $DiViSeUr #
#20170923093940____:$Z alias GeNeReRVB 'set VaLeUr=\!* ; \\ #
#20170923093940____:$Z @ VeRtE = $ElEmEnT_CoUrAnT / $DiViSeUrD * $FaCtEuR + $TrAnSD ; \\ #
#20170923093940____:$Z @ ReStE = $ElEmEnT_CoUrAnT % $DiViSeUrD ; \\ #
#20170923093940____:$Z @ RoUgE = $ReStE / $DiViSeUr * $FaCtEuR + $TrAnSD ; \\ #
#20170923093940____:$Z @ BlEuE = $ReStE % $DiViSeUr * $FaCtEuR + $TrAnSD ; \\ #
#20170923093940____:$Z unset VaLeUr' #
$Z # Introduit le 20170922133520 afin de faciliter sa re-utilisation... #
$Z alias GeNeReRVB 'set VaLeUr="\!*" ; \\
$Z set RoUgE=$LiStE_ROUGE[$VaLeUr] ; \\
$Z set VeRtE=$LiStE_VERTE[$VaLeUr] ; \\
$Z set BlEuE=$LiStE_BLEUE[$VaLeUr] ; \\
$Z unset VaLeUr'
$Z # Introduit le 20170922133520 afin de faciliter sa re-utilisation... #
#20170921110550____:$Z FilSTmpB ISyracuse #
$Z set NuMeRo_SuItE=0
$Z while ($NuMeRo_SuItE < $NoMbRe_SuItEs)
$Z set CoOrDoNnEeS_Y=$NuMeRo_SuItE
$Z if ($EXIST) then
$Z # Afin de pouvoir inhiber facilement l'edition qui suit... #
#20171010134229____:$Z echo "Y=$CoOrDoNnEeS_Y" #
$Z echo "U(0)=$CoOrDoNnEeS_Y"
$Z else
$Z endif
$Z @ NuMeRo_SuItE = $NuMeRo_SuItE + 1
$Z set SuItE_CoUrAnTe=`(listMN $FSyracuse $NuMeRo_SuItE $NuMeRo_SuItE)`
$Z set CoOrDoNnEeS_X=$Xmin
$Z set NuMeRo_ElEmEnT=1
$Z FilSTmpB FSyracuse_points
$Z while ($NuMeRo_ElEmEnT <= $#SuItE_CoUrAnTe)
$Z set ElEmEnT_CoUrAnT=$SuItE_CoUrAnTe[$NuMeRo_ElEmEnT]
#20170919163823____:$Z @ DiViSeUrD = $DiViSeUr * $DiViSeUr #
#20170919163823____:$Z @ TrAnSD = $TrAnS * $DiViSeUr #
#20170922133520____:$Z @ VeRtE = $ElEmEnT_CoUrAnT / $DiViSeUrD * $FaCtEuR + $TrAnSD #
#20170922133520____:$Z @ ReStE = $ElEmEnT_CoUrAnT % $DiViSeUrD #
#20170922133520____:$Z @ RoUgE = $ReStE / $DiViSeUr * $FaCtEuR + $TrAnSD #
#20170922133520____:$Z @ BlEuE = $ReStE % $DiViSeUr * $FaCtEuR + $TrAnSD #
$Z GeNeReRVB $ElEmEnT_CoUrAnT
$Z # Le '+$DiViSeUr' est destine a eviter des niveaux trop sombres... #
$Z # #
$Z # La modification du 20170919101620 a accelere d'un facteur 6.375 le calcul total. Notons #
$Z # qu'avant cette modification, le calcul de 'v $xiirk/SYRA.F1' a dure 07:40:10 (calcul #
$Z # effectue sur '$LACT1A'...). #
$Z # #
$Z # Rappelons au passage que '@' permet de calculer des expressions en allant de la gauche #
$Z # vers la droite et ce, sans priorite entre operateurs (et sans paranthesage...). #
$Z echo "$CoOrDoNnEeS_X" \
$Z >>! $FSyracuse_points$COORD_X
$Z echo "$CoOrDoNnEeS_Y" \
$Z >>! $FSyracuse_points$COORD_Y
$Z echo "$RoUgE" \
$Z >>! $FSyracuse_points$ROUGE
$Z echo "$VeRtE" \
$Z >>! $FSyracuse_points$VERTE
$Z echo "$BlEuE" \
$Z >>! $FSyracuse_points$BLEUE
#20170920113419____:$Z execRVB $xci/S_point$X A=$_____ImageR%s \ #
#20170920113419____:$Z X=$CoOrDoNnEeS_X \ #
#20170920113419____:$Z Y=$CoOrDoNnEeS_Y \ #
#20170920113419____:$Z R=$_____ImageR%s \ #
#20170920113419____:$Z $formatI #
$Z @ CoOrDoNnEeS_X = $CoOrDoNnEeS_X + 1
$Z @ NuMeRo_ElEmEnT = $NuMeRo_ElEmEnT + 1
$Z end
$Z set exec_aR="LISTE_NIVEAU=$FSyracuse_points$ROUGE ehbn=VRAI"
$Z set exec_aV="LISTE_NIVEAU=$FSyracuse_points$VERTE ehbn=FAUX"
$Z set exec_aB="LISTE_NIVEAU=$FSyracuse_points$BLEUE ehbn=FAUX"
#20170921110550____:$Z execRVB $xrv/S_points$X \ #
#20170921110550____:$Z LISTE_X=$FSyracuse_points$COORD_X \ #
#20170921110550____:$Z LISTE_Y=$FSyracuse_points$COORD_Y \ #
#20170921110550____:$Z R=$ISyracuse%s \ #
#20170921110550____:$Z $formatI #
#20170921110550____:$Z execRVB $xci/or_02$X A1=$ISyracuse%s \ #
#20170921110550____:$Z A2=$_____ImageR%s \ #
#20170921110550____:$Z R=$_____ImageR%s \ #
#20170921110550____:$Z $formatI #
$Z execRVB $xrv/S_points$X A=$_____ImageR%s \
$Z LISTE_X=$FSyracuse_points$COORD_X \
$Z LISTE_Y=$FSyracuse_points$COORD_Y \
$Z R=$_____ImageR%s \
$Z $formatI
$Z # La modification du 20170920113419 a accelere d'un facteur 6 le calcul total... #
$Z # #
$Z # Ainsi, apres les modifications des 20170919101620 et 20170920113419, le calcul de #
$Z # 'v $xiirk/SYRA.F1' ne dure plus que 00:03:00 (calculs effectues sur '$LACT1A'...). #
$Z # Le 20170921111515, le meme calcul effectue sur '$LACT19' a demande 00:03:08... #
$Z FilSTmpE FSyracuse_points
$Z end
#20170921110550____:$Z FilSTmpE ISyracuse #
#20170922133905____:$Z FilSTmpE FSyracuse #
#20170920132815____:$Z execRVB $xci/format.01$X \ #
#20170920132815____:$Z A=$_____ImageR%s \ #
#20170920132815____:$Z $formatI \ #
#20170920132815____:$Z mode=0 \ #
#20170920132815____:$Z R=$_____ImageR%s \ #
#20170920132815____:$Z $formatR_Sdu #
$Z set FoRmAtR=`eval echo "$K_DOLLAR""formatR_""$_____FormatR"`
$Z execRVB $xci/format.01$X \
$Z A=$_____ImageR%s \
$Z $formatI \
$Z mode=0 \
$Z R=$_____ImageR%s \
$Z $FoRmAtR
#20170920132815____:$Z Sdu #
$Z eval "$_____FormatR"
$Z set MaIlLe_X=`calculINS $dimX/$SaVe_dimX`
$Z set MaIlLe_Y=`calculINS $dimY/$SaVe_dimY`
$Z $xci/grille.01$X \
$Z A=$BLANC \
$Z niveau=$NOIR \
$Z denormalisees=VRAI \
$Z ox=$Xmin mx=$MaIlLe_X \
$Z oy=$Ymin my=$MaIlLe_Y \
$Z R=$xTV/GRILLE \
$Z $formatI
$Z execRVB $xci/and$X \
$Z A1=$xTV/GRILLE \
$Z A2=$_____ImageR%s \
$Z R=$_____ImageR%s \
$Z $formatI
$Z $xci/acces_RVB.11$Z $_____ImageR $_____ImageR
$Z # Introduit le 20170919173537 afin de rendre '$_____ImageR' plus lumineuse... #
$Z FilSTmpB Fmire
$Z set LiStE_ElEmEnTs=`$CA $FSyracuse.trie`
$Z set NLiStE_ElEmEnTs=$#LiStE_ElEmEnTs
$Z echo "Il y a $NLiStE_ElEmEnTs U(n) differents dans [$MiNiMuM,$MaXiMuM]."
$Z # Introduit le 20171009132257... #
$Z set NuMeRo_SuItE=0
$Z while ($NuMeRo_SuItE < $NLiStE_ElEmEnTs)
$Z set CoOrDoNnEeS_X=$NuMeRo_SuItE
$Z @ NuMeRo_SuItE = $NuMeRo_SuItE + 1
$Z set ElEmEnT_CoUrAnT=$LiStE_ElEmEnTs[$NuMeRo_SuItE]
$Z @ CoOrDoNnEeS_Y = $ElEmEnT_CoUrAnT * $Ymax / $MaXiMuM
$Z GeNeReRVB $ElEmEnT_CoUrAnT
$Z echo "$CoOrDoNnEeS_X" \
$Z >>! $Fmire$COORD_X
$Z echo "$CoOrDoNnEeS_Y" \
$Z >>! $Fmire$COORD_Y
$Z echo "$RoUgE" \
$Z >>! $Fmire$ROUGE
$Z echo "$VeRtE" \
$Z >>! $Fmire$VERTE
$Z echo "$BlEuE" \
$Z >>! $Fmire$BLEUE
$Z end
$Z execRVB $xrv/store_image$X ne=0 \
$Z LISTE_X=$Fmire$COORD_X \
$Z Xdenormalisees=VRAI \
$Z LISTE_Y=$Fmire$COORD_Y \
$Z Ydenormalisees=VRAI \
$Z histogramme=VRAI \
$Z LISTE_NIVEAU=$Fmire%s \
$Z Ndenormalises=VRAI \
$Z R=$_____ImageR.MIRE%s \
$Z $formatI
$Z # Introduit le 20170922134000... #
$Z FilSTmpE Fmire
$Z FilSTmpE FSyracuse