Avril 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | | Calendrier |
|
| | Exercice pour les matheux ! | |
| | Auteur | Message |
---|
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Exercice pour les matheux ! Mer 30 Avr 2014 - 14:35 | |
| | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Exercice pour les matheux ! Mer 30 Avr 2014 - 15:11 | |
| Voici la première étape qui consiste a récupérer le nombre de jours depuis le début de l'année J'ai rajouté l'équation du temps et la déclinaison : - Code:
-
DIM jour , mois , annee , N , N1 , N2 , K DIM M , C , L , R , equation_temps , declinaison
jour=VAL(LEFT$(DATE$,2)) : mois=VAL(MID$(DATE$,4,2)) : annee=VAL(RIGHT$(DATE$,4)) N1=( mois * 275 ) / 9 : N2=(mois + 9) / 12 K=1+INT((annee-4*INT(annee/4)+2)/3) N=INT(N1-N2*K+jour-30) : ' N représente le rang du jour dans l'année (1er janvier = 1) MESSAGE "RANG DU JOUR : " + STR$(jour) + "/" + STR$(mois) + "/" + STR$(annee) + " > " + STR$(N)
' L'unité des termes et coefficients des expressions et des quantités M, C, L et R est le degré: M = N * ( 357 + 0.9856 ) : ' M est l'anomalie moyenne en degrés C = 1.914 * sin(M) + 0.02 * sin(2 * M) : ' C est l'équation du centre (influence de l'ellipticité de l'orbite terrestre) en degrés L = 280 + C + 0.9856 * N : ' L est la longitude vraie du Soleil en degrés R = -2.465 * sin(2 * L) + 0.053 * sin(4 * L) : ' R est la réduction à l'équateur (influence de l'inclinaison de l'axe terrestre) en degrés equation_temps = (C + R) * 4 MESSAGE "EQUATION DU TEMPS : "+STR$(equation_temps)
' Pour la déclinaison du Soleil le jour "j" : declinaison = 0.3978 * sin(L) : ' (Ici 0,3978 représente le sinus de l'obliquité de l'écliptique) MESSAGE "DECLINAISON : "+STR$(declinaison)
END
Pourriez vous SVP vérifier si cela est bon ?
Dernière édition par Minibug le Mer 30 Avr 2014 - 18:18, édité 1 fois | |
| | | sergeauze
Nombre de messages : 391 Age : 71 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: Exercice pour les matheux ! Mer 30 Avr 2014 - 15:53 | |
| | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Exercice pour les matheux ! Mer 30 Avr 2014 - 16:02 | |
| Bonjour sergeauze,
Merci pour ton aide.
En fait je cherche a faire mes calculs en live dans panoramic car je dois utilisé ses valeurs ensuite dans un autre but.
Il me faut donc pouvoir recalculer le jour et la localisation géographique.
Merci encore | |
| | | papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Exercice pour les matheux ! Mer 30 Avr 2014 - 18:55 | |
| J’ai déjà fais un programme de ce type : - cliquer:
- Code:
-
' ****************************************************************************** ' Lever_Coucher_soleil.bas ' LEVER ET COUCHER DU SOLEIL ' PAR PAPYDALL ' Calcul du lever et coucher du soleil n'importe quand et n'importe où. ' Il suffit de modifier la ville et ses coordonnées dans la SUB SunRise_SunSet(month,day) ' La précision des calculs est de une à deux minutes, trois au maximum. ' ça reste toujours acceptable. ' ****************************************************************************** Go() end ' ****************************************************************************** SUB Go() Init() : Grille() END_SUB ' ****************************************************************************** SUB Init() LABEL NeSeLevePas,NeSeCouchePas,Change_Date,Quit DIM wg%, hg%, wc%, hr%, wf%, rf%, i%, j%, ms$(12), js$(7), lm%(12), a$, b$, c%, r% DIM Annee, Mois, Jour DIM lev$,couch$ FOR i% = 1 TO 12: READ ms$(i%) : NEXT i% FOR i% = 0 TO 6: READ js$(i%) : NEXT i% FOR i% = 1 TO 12: READ lm%(i%) : NEXT i% wc% = 115 : wf% = 22 : hr% = 24 : rf% = 20 wg% = wf% + 12*wc%+35 : hg% = rf% + 31*hr%+2*hr%-15 END_SUB ' ****************************************************************************** SUB Grille() GRID 1: WIDTH 1,wg%: HEIGHT 1,hg% WIDTH 0,WIDTH(1)+16: HEIGHT 0,HEIGHT(1)+60: BORDER_SMALL 0: COLOR 0,128,255,255 GRID_COLUMN 1,13 : GRID_ROW 1,32 GRID_COLUMN_WIDTH 1,wc%: GRID_ONE_COLUMN_WIDTH 1,1,wf% GRID_ROW_HEIGHT 1,hr%: GRID_ONE_ROW_HEIGHT 1,1,rf% GRID_FIXED_COLOR 1,255,255,190 FONT_NAME 1,"Consolas": FONT_SIZE 1,11 BUTTON 2: TOP 2,HEIGHT(0)-60: LEFT 2,WIDTH(1)/2-150: WIDTH 2,140: HEIGHT 2,20 CAPTION 2,"<- Année précédente": FONT_BOLD 2 BUTTON 3: TOP 3,TOP(2): LEFT 3,LEFT(2)+WIDTH(2)+10: WIDTH 3,140: HEIGHT 3,HEIGHT(2) CAPTION 3,"Année suivante ->" : FONT_BOLD 3 ON_CLICK 2, Change_Date: ON_CLICK 3, Change_Date BUTTON 4 : TOP 4,TOP(3): LEFT 4,LEFT(3)+WIDTH(3)+10: WIDTH 4,140: HEIGHT 4,HEIGHT(3) CAPTION 4," Quitter " : FONT_BOLD 4 : ON_CLICK 4,Quit FOR i% = 1 TO 31 GRID_WRITE 1,i%+1,1,STR$(i%) NEXT i% FOR i% = 1 TO 12 a$ = ms$(i%): j% = (10-LEN(a$))/2 IF LEN(a$)<9 THEN a$ = STRING$(j%," ") + a$ GRID_WRITE 1,1,i%+1,a$ NEXT i% Annee = VAL(RIGHT$(DATE$,4)) Calcul() END_SUB ' ****************************************************************************** SUB Calcul() Bisex(Annee): IF rs_bi% = 1 THEN lm%(2) = 29 inactive 2 : inactive 3 FOR Mois = 1 TO 12 c% = Mois+1 FOR Jour = 1 TO lm%(Mois) Jmq(Annee,Mois,Jour) SunRise_SunSet(mois,jour) GRID_WRITE 1,Jour+1,c%,lev$ + " / "+ couch$ NEXT Jour NEXT Mois if rs_bi% = 0 then grid_write 1,30,3,"" active 2 : active 3 END_SUB ' ****************************************************************************** Change_Date: IF CLICKED(2) = 1 then Annee = Annee - 1 : ELSE : Annee = Annee + 1 Calcul() RETURN ' ****************************************************************************** SUB Bisex(Annee) IF VARIABLE("rs_bi%") = 0 THEN DIM rs_bi% rs_bi% = 0 IF (FRAC(Annee/4)=0 AND FRAC(Annee/100)>0) OR FRAC(Annee/400)=0 THEN rs_bi% = 1 END_SUB ' ------------------------------------------------------------------------------ Quit: TERMINATE RETURN ' ------------------------------------------------------------------------------ SUB Jmq(Annee,Mois,Jour) DIM_LOCAL Jm_Q, Jm_m IF VARIABLE("rs_qa%") = 0 THEN DIM rs_qa% Jm_Q = 0 IF Mois > 1 FOR Jm_m = 1 TO Mois - 1 SELECT Jm_m CASE 1: Jm_Q = Jm_Q+31 CASE 2: Jm_Q = Jm_Q+28 IF (FRAC(Annee/4)=0 AND FRAC(Annee/100)>0) OR FRAC(Annee/400)=0 THEN Jm_Q=Jm_Q+1 CASE 3: Jm_Q = Jm_Q+31 CASE 4: Jm_Q = Jm_Q+30 CASE 5: Jm_Q = Jm_Q+31 CASE 6: Jm_Q = Jm_Q+30 CASE 7: Jm_Q = Jm_Q+31 CASE 8: Jm_Q = Jm_Q+31 CASE 9: Jm_Q = Jm_Q+30 CASE 10: Jm_Q = Jm_Q+31 CASE 11: Jm_Q = Jm_Q+30 END_SELECT NEXT Jm_m END_IF rs_qa% = Jm_Q+Jour END_SUB ' ****************************************************************************** ' * Calcul du lever et coucher du soleil n'importe quand et n'importe où. ' * Il suffit de modifier la ville et ses coordonnées SUB SunRise_SunSet(month,day) dim_local k,jm,jl,e,ob,pi dim_local tex$ dim_local dr,hr,ht,La,Lo,mois,jour,h,j,m,L,s,x,y,z,R,rx,ry,ET,DC,cs,ah,pm,hs,fh dim_local CalculSol$,ville$,hs$,pm$ ' Fuseau horaire et coordonnées géographiques k = 0.0172024 : jm = 308.67 : jl = 21.55 : e = 0.0167 : ob = 0.4091 PI= 3.1415926536 mois = month : jour = day ' La = Latitude ( positive à l'hémisphère Nord et négative à l'hémisphère Sud) ' Lo = Longitude ( positive à l'EST et négative à l'OUEST ) ' ' Ville$ = "MOKNINE" : La = 35.550 : Lo = 10.833 : ' C'est ma ville de Tunisie ' Ville$ = "Stockholm" : La = 59.333 : Lo = 18.083 ' Ville$ = "xxxxx" : La = 88.000 : Lo = 0.000 ville$ = "PARIS" : La = 48.833 : Lo = 2.333 ' ------------------------------------------------------------------------------ ' Voici les coordonnées des quelques villes Françaises ' ville$ = "TOULOUSE" : La = 43.617 : Lo = 1.450 ' Ville$ = "STASBOURG" : La = 48.583 : Lo = 7.750 ' Ville$ = "MARSEILLE" : La = 43.300 : Lo = 5.367 ' Ville$ = "GRENOBLE" : La = 45.183 : Lo = 5.717 ' Ville$ = "CHERBOURG" : La = 49.633 : Lo = 0-1.617 ' Ville$ = "BORDEAUX" : La = 44.833 : Lo = 0-0.567 ' Ville$ = "BREST" : La = 48.383 : Lo = 0-4.500 ' Ville$ = "LILLE" : La = 50.650 : Lo = 3.083 ' Ville$ = "CLERMONT-FERRAND" :La = 45.783 : Lo = 3.083 ' ------------------------------------------------------------------------------ tex$ = "LEVER ET COUCHER DU SOLEIL PAR PAYDALL - VILLE : " + Ville$ tex$ = tex$ + " - ANNÉE " + STR$(Annee) + " -" CAPTION 0,tex$ ' Hauteur du soleil au lever et au coucher dr = PI/ 180 : hr = PI/ 12 : ht = (-40 / 60) : ht = ht * dr La = La * dr : Lo = 0-Lo * dr ' Date IF (mois < 3) then mois = mois + 12 ' Heure TU du milieu de la journée h = 12 + (Lo / hr) ' Nombre de jours écoulés depuis le 1 Mars O h TU J = int(30.61 * (mois + 1)) + jour + (h / 24) - 123 ' Anomalie et longitude moyenne M = k * (J - jm) : L = k * (J - jl) ' Longitude vraie S =L + 2 * e * Sin(M) + 1.25 * e * e * Sin(2 * M) ' Coordonnées rectangulaires du soleil dans le repère équatorial X = Cos(S) : Y = Cos(ob) * Sin(S) : Z = Sin(ob) * Sin(S) ' Equation du temps et déclinaison R = L : rx = Cos(R) * X + Sin(R) * Y : ry = 0-Sin(R) * X + Cos(R) * Y X = rx : Y = ry : ET = atn(Y / X) : DC = atn(Z / Sqr(1 - Z * Z)) ' Angle horaire au lever et au coucher cs = (Sin(ht) - Sin(La) * Sin(DC)) / Cos(La) / Cos(DC) IF (cs > 1) then CalculSol$ = "Ne se lève pas" : goto NeSeLevePas IF (cs < -1) then CalculSol$ = "Ne se couche pas" : goto NeSeCouchePas IF (cs = 0) then ah = PI / 2 : ELSE : ah = atn(Sqr(1 - cs * cs) / cs) IF (cs < 0) then ah = ah + PI ' Lever du soleil Pm = h + fh + (ET - ah) / hr IF (Pm < 0) then Pm = Pm + 24 IF (Pm > 24) then Pm = Pm - 24 hs = int(Pm) : Pm = int(60 * (Pm - hs)) : hs = hs + 1 : ' GMT +1 à modifier éventuellement hs$ = str$(hs) : pm$ = str$(pm)
IF len(str$(hs)) < 2 then hs$ = "0" + str$(hs) IF len(str$(Pm)) < 2 then Pm$ = "0" + str$(Pm) NeSeLevePas: IF CalculSol$ = "" then lev$ = hs$ + ":" +Pm$ :ELSE : lev$ = "-----" ' Coucher du soleil Pm = h + fh + (ET + ah) /hr IF Pm > 24 then Pm = Pm - 24 IF Pm < 0 then Pm = Pm + 24 hs = int(Pm) : Pm = int(60 * (Pm - hs)) : hs = hs + 1 : ' GMT +1 à modifier éventuellement hs$ = str$(hs) : pm$ = str$(pm)
IF len(str$(hs)) < 2 then hs$ = "0" + str$(hs) IF len(str$(Pm)) < 2 then Pm$ = "0" + str$(Pm) NeSeCouchePas: IF CalculSol$ = "" then couch$ = hs$ + ":" + Pm$ : ELSE : couch$ = "-----" display
END_SUB ' ****************************************************************************** DATA "JANVIER","FÉVRIER","MARS","AVRIL","MAI","JUIN" DATA "JUILLET","AOÛT","SEPTEMBRE","OCTOBRE","NOVEMBRE","DÉCEMBRE" DATA "Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi" DATA 31,28,31,30,31,30,31,31,30,31,30,31 ' ******************************************************************************
Pour en savoir plus c’est iciEDIT : Edité pour adapter l'affichage à l'écran
Dernière édition par papydall le Jeu 1 Mai 2014 - 15:10, édité 4 fois | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Exercice pour les matheux ! Mer 30 Avr 2014 - 19:05 | |
| | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| | | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Exercice pour les matheux ! Mer 30 Avr 2014 - 22:12 | |
| @ papydall, sans vouloir abuser...
Pourrais tu me dire quelle variable je dois modifier pour obtenir l'heure du début de l'aube (aube naissante) car là je ne trouve que le levé du soleil une fois terminé.
J'ai réalisé il y a quelques mois, une application pour l'Adhan mais je reste tributaire d'un fichier que j'ai récupéré sur internet pour les horaires.
Je souhaite en fait avoir une autonomie complète sans avoir recours a aucun fichier.
Merci d'avance pour ta réponse papydall. | |
| | | papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Exercice pour les matheux ! Jeu 1 Mai 2014 - 0:24 | |
| En toute sincérité, je ne sais pas Si je trouverais quelque chose, je n'y manquerais pas d'en faire part. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Exercice pour les matheux ! Jeu 1 Mai 2014 - 9:50 | |
| Je pense avoir trouvé un lien intéressant : http://jean-paul.cornec.pagesperso-orange.fr/prieres.htmMais je ne vois pas quelles modifications apportées a ton programme. Je vais creuser tous cela durant le week end et faire plusieurs tests... Avec toutes ces infos, je vais bien réussir a trouver quelque chose. | |
| | | papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Exercice pour les matheux ! Jeu 1 Mai 2014 - 14:04 | |
| Pour déterminer l’heure de l’aube je pense avoir trouvé ce qu’il faut modifier dans le programme. Modifier la valeur de la variable ht juste avant de calculer l’angle horaire au lever et au coucher qui deviendra angle horaire à l’aube et au crépuscule a la ligne 163 - Code:
-
' Angle horaire au lever et au coucher cs = (Sin(ht) - Sin(La) * Sin(DC)) / Cos(La) / Cos(DC)
Qui deviendra : - Code:
-
' Angle horaire à l’aube et au crépuscule Ht = -0.309 : ‘ le centre du Soleil est à 18° sous l’horizon cs = (Sin(ht) - Sin(La) * Sin(DC)) / Cos(La) / Cos(DC)
Tout ça, ça reste à vérifier en comparant les résultats calculés avec ceux donnés par les éphémérides. REMARQUE : le programme ne tient pas compte de l’heure d’été / heure d’hiver. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Exercice pour les matheux ! Jeu 1 Mai 2014 - 20:01 | |
| Merci papydall. J'avais commencé les recherches de mon coté et j'étais arrivé au même résultat. Maintenant il s'agit de mettre tout cela en pratique. Je vais faire différents tests et je ne manquerai pas de vous présenter mes résultats. Encore merci. Concernant le passage de l'heure d'hiver et d'été, j'ai adapté une base de calcul trouvée sur internet. Peut être cela pourra servir a quelqu'un... Bonne soirée a tous. - Code:
-
DIM jour , a , b , siecle
a=2014 : ' IL SUFFIT JUSTE DE RENTRER L'ANNEE CONCERNEE
siecle = Int(a / 100) : a = a - (siecle * 100)
b = Int(2.6 - 0.19) + 31 + a + Int(a / 4) + Int(siecle / 4) - siecle * 2 jour = Int((b / 7 - Int(b / 7)) * 7 + 0.1) print "HEURE D'ETE : DIMANCHE "+STR$(31-jour)+" MARS "+STR$(a)
b = Int(2.6 * 8 - 0.19) + 31 + a + Int(a / 4) + Int(siecle / 4) - siecle * 2 jour = Int((b / 7 - Int(b / 7)) * 7 + 0.1) print "HEURE D'HIVER : DIMANCHE "+STR$(31-jour)+" OCTOBRE "+STR$(a)
END
| |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Exercice pour les matheux ! Dim 4 Mai 2014 - 0:57 | |
| @papydall, Concernant ton programme des heures de lever et coucher de soleil, tout de même le résultat me rend perplexe, et je m'aperçois que j'avais déjà fait la remarque dans ton post correspondant https://panoramic.1fr1.net/t2769-lever-et-coucher-du-soleil?highlight=lever+et+coucherJe remarque que d'une année sur l'autre, pour une date donnée, les heures sont identiques, d'accord. Mais ce qui me choque, c'est que pour une année bissextile ça ne change rien du tout ! Je m'explique: - entre le 20 février et le 5 mars, les heures de lever diminuent en moyenne de 2 minutes par jour - pour une année bissextile où on ajoute le 29 février, eh bien on ajoute une heure intermédiaire sans rien changer au 28 février ni au 1er mars Par exemple, pour les levers de soleil: - Code:
-
2015 2016 26/2 07:39 26/2 07:39 27/2 07:37 27/2 07:37 28/2 07:35 28/2 07:35 29/2 07:34 01/3 07:33 01/3 07:33 02/3 07:31 02/3 07:31 03/3 07:29 03/3 07:29 Ca paraît quand même un peu fort, tous les jours ça diminue de 2 minutes, et justement ce jour-là, le 29/2, ça ne diminue que d'une minute pour ne pas perturber l'horaire des jours suivants ! Là, des questions d'arrondi, j'ai un peu de mal à y croire, tout de même ! surtout que ce phénomène (?) se répète systématiquement tous les 4 ans ! Le soleil serait bien gentil de décaler son heure de lever justement ce jour supplémentaire pour ne pas perturber la suite. | |
| | | papydall
Nombre de messages : 6996 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Exercice pour les matheux ! Dim 4 Mai 2014 - 13:06 | |
| | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Exercice pour les matheux ! Dim 4 Mai 2014 - 14:15 | |
| Ah Ah ! Bonne reflexion JL35, j'avais aussi trouvé cela bizarre... D'ailleurs je ne comprends pas pourquoi il m'est impossible de trouvé l'heure de l'aube (au tout début du levé du soleil) même en se basant sur 18° qui est d'après les spécialistes la base du calcul. Je seul résultat qui semble correct c'est le levé du soleil une fois terminé et le début du couché du soleil. Pour l'aube si quelqu'un a une idée... papydall, es tu sur qu'il n'y a pas une erreur dans le programme ?Car la, malgré tout cela je sèche.... | |
| | | JL35
Nombre de messages : 7095 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Exercice pour les matheux ! Dim 4 Mai 2014 - 14:17 | |
| N'empêche, vérification faite: http://www.ephemeride.com/calendrier/solaire/19/horaires-du-soleil.html?si on regarde février/mars 2016, le 29 février est bien pris en compte, et toutes les heures de lever des jours suivants sont bien décalées de 2 minutes par rapport à ton calendrier (et par rapport à l'année précédente non bissextile), ce qui est logique. Ce qui est illogique c'est d'avoir les mêmes valeurs tous les ans à la même date (sinon un seul calendrier suffirait... ). Bon allez, je pinaille papydall, mais comme c'était un calcul scientifique je m'attendais à de la rigueur du même nom. Puisque c'est comme ça, je continuerai à me fier à mon réveil-matin pour mon heure de lever à moi Salut Minibug, on s'est croisés ! | |
| | | Contenu sponsorisé
| Sujet: Re: Exercice pour les matheux ! | |
| |
| | | | Exercice pour les matheux ! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |