####################################################################################################################################### # # # 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