jw Posted October 2, 2003 Posted October 2, 2003 (edited) Hieronder de berekening de maand uit te rekenen waarop Pasen valt. Je hoeft alleen een veld aan te maken met het jaartal (Glob jaartal). In een andere poosting laat ik de dag uitrekenen waarop Pasen valt. En eeeh, wel even nakijken of het klopt. Je moet nooit zomaar iets klakkeloos kopieëren. (Ik heb hem overigens zelf uitgepuzzeld). Int((Mod(19 * Mod(Glob jaartal ; 19) + Int(Glob jaartal / 100) - Int(Int(Glob jaartal / 100) / 4) - Int((Int(Glob jaartal / 100) - Int((Int(Glob jaartal / 100) + 8 ) / 25) + 1) / 3) + 15; 30) + Mod(32 + 2 * Mod(Int(Glob jaartal / 100) ; 4) + 2 * Int(Mod(Glob jaartal ; 100) / 4) - Mod(19 * Mod(Glob jaartal ; 19) + Int(Glob jaartal / 100) - Int(Int(Glob jaartal / 100) / 4) - Int((Int(Glob jaartal / 100) - Int((Int(Glob jaartal / 100) + 8 ) / 25) + 1) / 3) + 15; 30) - Mod(Mod(Glob jaartal ; 100) ; 4); 7) - 7 * (Int( (Mod(Glob jaartal ; 19) + 11 * (Mod(19 * Mod(Glob jaartal ; 19) + Int(Glob jaartal / 100) - Int(Int(Glob jaartal / 100) / 4) - Int((Int(Glob jaartal / 100) - Int((Int(Glob jaartal / 100) + 8 ) / 25) + 1) / 3) + 15; 30)) + 22 * (Mod(32 + 2 * Mod(Int(Glob jaartal / 100) ; 4) + 2 * Int(Mod(Glob jaartal ; 100) / 4) - Mod(19 * Mod(Glob jaartal ; 19) + Int(Glob jaartal / 100) - Int(Int(Glob jaartal / 100) / 4) - Int((Int(Glob jaartal / 100) - Int((Int(Glob jaartal / 100) + 8 ) / 25) + 1) / 3) + 15; 30) - Mod(Mod(Glob jaartal ; 100) ; 4); 7))) / 451 )) + 114 ) / 31 ) Edited October 3, 2003 by Guest Quote
AvD Posted October 2, 2003 Posted October 2, 2003 Hiermee krijg ik ook 20 als resultaat, en er zijn slechts 12 maanden. Moeten we terug naar het Vaticaan of kan je me hieruit helpen? Oh heb ik zelf iets misplakt? Quote
jw Posted October 3, 2003 Author Posted October 3, 2003 Wel, bij het Vaticaan hebben ze nu andere zorgen, ik weet niet of ze nu tijd voor zullen hebben. Ik heb het zelf eens nagezien. Je hebt gelijk, ik had twee maal de zelfde formule ingeplakt, maar dat bleek al uit je antwoord. Inmiddels heb ik de andere formule ervoor in de plaats gezet. En, inderdaad moet er 20 april uitkomen, dus die 20 is alvast goed. Quote
rmw Posted October 3, 2003 Posted October 3, 2003 (edited) Very impressed! Ik neem aan dat het alleen werkt voor de Gregoriaanse kalender. Voor 1582 hebben we dus een probleem Edited October 3, 2003 by Guest Quote
rgaros Posted October 3, 2003 Posted October 3, 2003 (edited) Hieronder de berekening de maand uit te rekenen waarop Pasen valt. Je hoeft alleen een veld aan te maken met het jaartal (Glob jaartal). In een andere poosting laat ik de dag uitrekenen waarop Pasen valt. Deze is gebaseerd op een wetenschappelijk artikel over het berekenen van de Paasdatum. Voor de overzichtelijkheid in twee berekenings velden. Eerst het veld 'Pasen Dagen'= (Mod((225 - (11 * Mod(Jaar, 19))) - 21 , 30) + 21 - (Mod((225 - (11 * Mod(Jaar, 19))) - 21 , 30) + 21 > 48)) + 7 - (Mod(Jaar + Int(Jaar / 4) + (Mod((225 - (11 * Mod(Jaar, 19))) - 21 , 30) + 21 - (Mod((225 - (11 * Mod(Jaar, 19))) - 21 , 30) + 21 > 48)) + 1 , 7)) En vervolgens de datum in het veld Pasen= If(Jaar >= 1900 and Jaar <= 2099 , Date(3 , Pasen Dagen, Jaar), TextToDate("") ) En vervolgens andere feestdagen gebaseerd op de maankalender: Goede Vrijdag = Pasen -2 Hemelvaart = Pasen + 39 Pinksteren = Pasen + 49 Kerst en Nieuwjaar zijn gemakkelijker! Saluut, René Edited October 3, 2003 by Guest Quote
jw Posted October 3, 2003 Author Posted October 3, 2003 Ik neem aan dat het alleen werkt voor de Gregoriaanse kalender. Voor 1582 hebben we dus een probleem ik denk dat Pasen enzo voor 1582 al een feestdag was voor het gewone volk. Quote
rmw Posted October 3, 2003 Posted October 3, 2003 Zonder hier een hele draad los te willen trekken over kalenders: in 1582 heeft paus Gregorius besloten dat na vier oktober 1582 vijftien oktober 1582 zou komen, omdat de juliaanse kalender die tot dan toe werd gebruikt niet meer klopte met de zonnetijd. Deze tien 'niet bestaande' dagen zorgen voor een fout in de berekening zoals jw die heeft gepost, als je een jaartal voor 1582 invoerd. Quote
Dr_Flash Posted October 3, 2003 Posted October 3, 2003 Sterker nog, omdat die aanpassing in oktober viel, gaat het OOK al mis als je 1582 ZELF als jaartal gebruikt Maar dat is natuurlijk een eitje: IF(jaartal <= 1582; MONSTERFORMULE - 10; MONSTERFORMULE) Quote
rmw Posted October 4, 2003 Posted October 4, 2003 Zo makkelijk gaat dan niet Dr Flash! Door die tien verdwenen dagen verschuift voor 15 oktober 1582 de bepaling van de vollemaansdag die nodig is voor de berekening van pasen. Dus er is meer voor nodig, maar wat weet ik ook nog niet precies. Quote
Dr_Flash Posted October 4, 2003 Posted October 4, 2003 Dat ben ik niet met je eens rmw. De eerste volle maan na het begin van de lente, dat blijft hetzelfde, want daar zijn alleen maar astronomische parameters bij betrokken, en die kijken niet naar welk nummer wij aan een dag geven. En, er vanuit gaande dat de dagen van de week gewoon wel hun normale volgorde aangehouden hebben (waarom zou je dat wijzigen?) wordt ook die niet beïnvloed door de verschuiving. Of mis ik ergens iets? Quote
rmw Posted October 4, 2003 Posted October 4, 2003 Dr Flash, ik moet toegeven dat ik in dit geval mijn leermeester na spreek. Hij is echter vergeten mij een antwoord op je tegenwerping te vertellen. Ik heb van hem wel de formule gekregen die wel rekening houdt met 1582 (het veld voor het jaar heet gJaar) dag ((If(gJaar>1582 ; (Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*(1-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*Int(29/(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)+1))*Int((21-Mod(gJaar ; 19))/11)))-Mod(gJaar+Int(gJaar/4)+(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*(1-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*Int(29/(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)+1))*Int((21-Mod(gJaar ; 19))/11)))+2-Int(gJaar/100)+Int(Int(gJaar/100)/4) ; 7) ; Mod((19*Mod(gJaar ; 19))+15 ; 30)-Mod(gJaar+Int(gJaar/4)+Mod((19*Mod(gJaar ; 19))+15 ; 30) ; 7)))+28-31*Int(maand/4)) maand (3+Int(((If(gJaar>1582 ; (Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*(1-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*Int(29/(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)+1))*Int((21-Mod(gJaar ; 19))/11)))-Mod(gJaar+Int(gJaar/4)+(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*(1-Int(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)/28)*Int(29/(Mod(Int(gJaar/100)-Int(Int(gJaar/100)/4)-Int((8*Int(gJaar/100)+13)/25)+(19*Mod(gJaar ; 19))+15 ; 30)+1))*Int((21-Mod(gJaar ; 19))/11)))+2-Int(gJaar/100)+Int(Int(gJaar/100)/4) ; 7) ; Mod((19*Mod(gJaar ; 19))+15 ; 30)-Mod(gJaar+Int(gJaar/4)+Mod((19*Mod(gJaar ; 19))+15 ; 30) ; 7)))+40)/44)) Je zult zien dat de uitkomsten verschillen, dus ik blijf je nog een antwoord schuldig. Quote
rgaros Posted October 4, 2003 Posted October 4, 2003 Is dit weer een wedstrijd 'de langste en meest ondoorzichtige code'? Ik maak me vaak druk om kleinigheden, maar de paasdag voor jaartal 1582 wind zelfs ik me niet over op... René Quote
Dr_Flash Posted October 4, 2003 Posted October 4, 2003 De langste is het zeker niet. Onze guru Stef had enkele weken geleden een calculatie met ongeveer 100 Substitute-functies gepost. Ondoorzichtig is het echter wel. JW kun jij als EasterMaster enig licht werpen op hoe die functie nou werkt? Het schijnt iig wel te werken Quote
JeanWM Posted October 5, 2003 Posted October 5, 2003 Het verschil tussen de Jul en Greg kalender is niet alleen de 10 dagen. In de Jul begint iedere nieuwe dag op het middaguur, in de Greg om middernacht. Om van de ene naar de andere over te gaan dien je dus rekening te houden met de 'tijd'. Voor ouderdomsbepaling met C14 hebben we jaren geleden problemen gehad. Dit werd opgelost door ook de tijd in de berekening te nemen bij de conversie. FM heeft ons toen op weg geholpen met Art 106246 en 106247 Quote
Dr_Flash Posted October 5, 2003 Posted October 5, 2003 Die tijd dat gaat dus wel uitmaken voor onze paasberekening. Dan ben je namelijk afhankelijk van de precieze tijdstippen van Volle maan en de zonnewende (equinox). Maar dat dat bij C-14 datering iets uit zou maken komt me hoogst onwaarschijnlijk voor. De beste nauwkeurigheid die je met C-14 kunt halen is in de orde van tientallen jaren, en alleen maar voor de eerste 5000 jaar, daarna wordt de afwijking groter. Dus wat het tijdstip van de dag daarmee te maken heeft....? Of ik begrijp het verkeerd, dat kan natuurlijk ook Jean, kun je daar eens wat meer over vertellen? Quote
JeanWM Posted October 5, 2003 Posted October 5, 2003 De 10-talle jaren afwijking is allang achterhaald. Op labniveau kunnen we zelfs tot op fracties van seconden gaan....veldwerk is een andere discussie.... Daarbij 1500 is hoop en al 500 jaar verschil, daar zitten we goed. Als je weet dat de ene om uur nul vernadeert en de andere op 12 uur, neem je een basis die er vrij dicht tegen ligt, met tijdsaanduiding. Als je weet dat FM begint te tellen vanaf 1 jan 0001, kun je gemakkelijk 2400000.5 nemen als basis. Van daaruit kun je alles verder berekenen. Het probleem is dat bepaalde 'gebruikers' halstarrig 'verouderde' standaards' blijven gebruiken. Het zou hetzelfde zijn alsof iemand nog steeds offertes zou maken in BF.... Daarvoor gebruiken we 'omvormingstabellen'. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.