アプリ版:「スタンプのみでお礼する」機能のリリースについて

年月日を代入したら曜日を返す公式を自作しました。
もちろん、ツェラーの公式があるのは知っていたのですが。
誰か数学に詳しい方、私が自作した公式「Floraの公式」を、評価していただけたらなと思い、投稿させていただきました。

ブログを持っており、リンク先には証明および関連記事があります。
詳しい方からのアドバイスを待っております。

<証明>
Floraの公式はY年M月D日の曜日を返す式である。

Floraの公式
 Flr(Y,M,D) = R + [R/4] - [Y/100] + [Y/400] + [2.6*M + 2.7] + D - 1 (R = Y%28)

結果は以下のように定義する。
 Flr(Y,M,D)%7 = 0: Sun., = 1: Mon., .= 2: Tue., = 3: Wed., = 4:Thu., = 5: Fri., = 6: Sat.

  (ただし、M = 1,2はそれぞれM = 13,14としY = Y - 1とする。)
  (RはYを28で割った余りである。R = Y%28)

式の証明は大きく以下のように分けられる(1,2月は、前年の13,14月とする。)。
A、同一世紀内での規則性を式にあらわす式を証明する。
B、世紀をまたがった規則性をあらわす式を証明する。
C、月毎の変化をあらわす式を証明する。
D、まとめ

ただし、以下の点に注意。
※0は日曜日、1は月曜日、2は火曜日、・・・である。
※1年は3月から始まり、次の年の2月で終わることとし、1月を13月、2月を14月とする)、と考える。
※20世紀は、1900~1999年のような間をさす。他の世紀も同様に。

以下の詳しい証明は、ブログに書いております。ブログ『心善淵』の関連記事:http://blog.goo.ne.jp/hihumizzz/c/3efe00080b47e4 …

A 回答 (7件)

どう見ても、ツェラーの公式としか思えないんですが、


これが独立した解であるといえるのでしょうか。
たんなるツェラーの公式の変形ですよね。
    • good
    • 1
この回答へのお礼

コメントありがとうございます。
他の方のコメントも参考にすると、ツェラーの公式と同じとのことです。

確かに、そのようです。私の勉強不足でした。

お礼日時:2008/07/06 23:32

ぼくが知っているツェラーの公式はこれです。


W=(Y+[Y/4]-[Y/100]+[Y/400]+[26*(M+1)/10]+D-1)%7 (Mは3~14、日曜日が0)

R+[R/4]-[Y/100]+[Y/400]+[2.6*M + 2.7]+D-1 のうち、
 R=Y%28は、後で%7するのでY%28%7=Y%7からRをYにしても答えは同じ。
 [2.6*M+2.7]は、M=3~14で[2.6*M+2.6]と同じ。(=[26*(M+1)/10])
ということは、ツェラーの式と全く同じ式になりますので、Floraの式で正しい値が計算できるでしょう。

ちなみに、ツェラーの式はいろいろなバリエーションがあるようで、
よく見かける式はこう変形します。
W=(Y+[Y/4]-[Y/100]+[Y/400]+[26*(M+1)/10]+D-1)%7
Y=100*C+N として、年のところだけ計算
 Y+[Y/4]-[Y/100]+[Y/400]
 =(100*C+N)+[25*C+N/4]-C+[C/4]
 =124*C+N+[N/4]+[C/4]  ※25*Cは整数なので[]の外に出した
 =(18*7-2)*C+N+[N/4]+[C/4]
18*7は後で%7をするので消してもおなじ
 → -2*C+N+[N/4]+[C/4]
W=(D+[26*(M+1)/10]+N+[N/4]+[C/4]-2*C-1)%7

他に変形版として、[26*(M+1)/10]-1 = [2.6*M+1.6] = [(13*M+8)/5]もありますね。
    • good
    • 0
この回答へのお礼

丁寧な解説、ありがとうございます。
ツェラーの公式に、このようなパターンがあるとは知らなかったです。

私の数学の知識も中途半端なもののため、このようなことに気が付かなかったようです。

なぜ28という数字が出てきたかというと、7と4の最小公倍数という点からです。詳しくはブログの証明をみていただけたら幸いです。

私が高校~大学一年のころに作った公式です。やっとすっきりしました。ありがとうございました。

お礼日時:2008/07/06 23:23

No.5の誤字を訂正します。



少数部 ⇒ 小数部

失礼しました。
    • good
    • 0
この回答へのお礼

丁寧な解説、ありがとうございます。

私の数学の知識も中途半端なもののため、このようなことに気が付かなかったようです。

なぜ28という数字が出てきたかというと、曜日の数の7とうるう年の周期の4の最小公倍数という点からです。詳しくはブログの証明をみていただけたら幸いです。

私が高校受験~大学一年のころに作った公式です。やっとすっきりしました。結局、別の道をたどっても、行きつく結論は同じということでしょうか。

ありがとうございました。勉強不足だったなと感じております。

お礼日時:2008/07/06 23:25

R は Y のままでも結果が同じなので,あえてひと手間かけて,あらかじめ R を求めるのは意味がないですね。



[2.6*M+2.7] の2.7の少数部は,0.6以上0.8未満で計算が成り立ちます。
したがって,この2.7を2.6とすると,ツェラーの公式の [26(M+1)/10] と同じです。

自力で公式を導かれた頭脳には敬服しますが,No.4の方の回答と同じ評価にならざるを得ません。
    • good
    • 0

すいませんタイプミスです。


=(1901%28)+[(1901%28)/4]-[1901/100]+[1901/400]+[2.6*11+2.7]+1-1
    • good
    • 0

No.1さんは計算が違ってますね。


1901年11月1日の場合・・・
Flr(1901,11,1)
=(1901%28)+[(1901%28)/4]-[1900/100]+[19900/400]+[2.6*11+2.7]+1-1
=25+6+19+4+31+1-1
=47
47%7=5 (金曜日)

[2.6*M+2.7]の部分は、[2.6*M+2.6]でも同じなので、[26*(M+1)/10]とも書けます。ツェラーの公式はこれを使ってますね。

公式が合っているかどうかは検証してません。。すいません
    • good
    • 0
この回答へのお礼

コメントありがとうございました。

上記にて計算は正しいです。実際に金曜でした。エクセルのweekday関数で確認しました。

他の方のコメントを参考にすると、結局はツェラーの公式と同じ内容とのことです。ちょっとがっかりですが、勉強になりました。私は勉強不足だったなと感じております。

このようなつまらない投稿にコメントしていただきありがとうございました。

お礼日時:2008/07/06 23:30

えーと、



>  Flr(Y,M,D) = R + [R/4] - [Y/100] + [Y/400] + [2.6*M + 2.7] + D - 1 (R = Y%28)

Y, M, D=(1900, 10,1) で試す(1901年11月1日)と、
Flr(1900,8,1) = R + [R/4] - [Y/100] + [Y/400] + [2.6*M + 2.7] + D - 1 (R = Y%28)
= mod(1900, 28)+mod(1900/4, 28) - (Y/100) + 28.7
= 9.7
となって、整数にすらなりません。
したがって、おかしいですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!