%FSTYLE{/syracuse/fabrique/styles/fabrique.css} %AUTEUR{Jean-Michel Sarlat} %MAIL{jsarlat@planete.net} %DATE{4 novembre 2002} %TITRE{Calculs avec PARI (1)} %P{§l/syracuse/pari/§Voir la page PARI sur ce site§} %P{Cette page est un premier essai d'utilisation de §gPARI§ à travers les fichiers tagués. Le sujet est simple : calculer la date en jours juliens c'est à dire déterminer le nombre de jours écoulés depuis le 1 janvier 4713 à midi (Greenwich) avant notre ère. Cette échelle de temps est utile pour synchroniser les calendriers ; c'est celle qui est utilisée en astronomie pour dater les événements.} %S{Le script julien.gp} FICHIER:julien.gp: \\ Julien est en l'honneur de Jules Scaliger, le père du mathématicien \\ qui a introduit cette échelle de temps en 1583. Le calendrier \\ grégorien date de 1582. \\ Calcul de la date en jours juliens JD(J,M,A,h,m,s) = { local(AT,BT,JDT) ; if (M<3 , A = A-1; M = M+12); AT = floor(A/100); BT = 2-AT+floor(AT/4); JDT = floor(365.25*(A+4716)) +floor(30.6001*(M+1)) +J +(h+(m+s/60)/60)/24 +BT -1524.5; return(JDT); } \\ Calcul de la date en jours juliens rapportée à l'époque 2000 \\ Utile pour l'utilisation des théories planétaires actuelles JD2000(J,M,A,h,m,s) = JD(J,M,A,h,m,s)-JD(1,1,2000,12,0,0); \\ Calcul de la date calendaire à partir du JD \\ La valeur retounée est le vecteur [J,M,A,h,m,s,JS] \\ (JS est le jour de la semaine) CD(jd) = { local(a,A,B,C,D,E,F,G,h,m,s,Z); Z = floor(jd+0.5); F = jd+0.5-Z; if (Z>=2299161, a = floor((Z-1867216.25)/36524.25); A = Z+1+a-floor(a/4), A = Z; ); B = A+1524; C = floor((B-122.1)/365.25); D = floor(365.25*C); E = floor((B-D)/30.6001); G = B-D-floor(30.6001*E)+F; h = (G-floor(G))*24; m = (h-floor(h))*60; s = (m-floor(m))*60; if (E<14,E=E-1,E=E-13); if (floor(E)>2,C=C-4716,C=C-4715); return([floor(G),E,C,floor(h),floor(m),floor(s),(Z+1)%7]); } § FICHIER:format.gp: MOIS = ["janvier","février","mars","avril","mai","juin",\ "juillet","août","septembre","octobre","novembre","décembre"]; JOURS = ["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"]; \\ format degrés, minutes, secondes format_dms(d) = Str(d[1]"°"d[2]"'"floor(d[3])"''"); \\ format j mois AAAA, h:m:s format_date(d) = Str(JOURS[d[7]+1]" "d[1]" "MOIS[d[2]]" "d[3]\ ", "d[4]":"d[5]":"floor(d[6])); § M:gp2html: gp="julien.gp" html="julien.html" %S{Le script format.gp} M:gp2html: gp="format.gp" html="format.html" %S{Utilisation} %SS{exemple} <[ ]> FICHIER:fabrique.gp: prevar(c) = return(Str(c" = ")); preexe(c) = return(Str(c" -> ")); fb(c) = return(Str(""c"")); fi(c) = return(Str(""c"")); out(c,e) = write(sortie,Str(""c" "e"")); outv(c) = out(prevar(c),eval(c)); oute(c) = out(preexe(c),eval(c)); outl(c,s) = write(sortie,Str(""c"")); § FICHIER:bgp1.txt: FICHIER:cmd%%n%%.gp: § FICHIER:egp1.txt: FICHIER:entete.gp: sortie = "test%%n%%.txt"; read("fabrique.gp"); %§ FICHIER:pied.gp: \\ \w test%%n%%.txt \q %§ SH:rm -f test%%n%%.txt SH:cat entete.gp cmd%%n%%.gp > test%%n%%.gp SH:gp < test%%n%%.gp 2> /dev/null SH:rm entete.gp pied.gp <[
]> <[cmd%%n%%.gp]> <[ |
| ]> <[test%%n%%.txt]> <[ |