2013年12月29日日曜日

جَيْب (jayb)

From India the sine function was introduced to the Arab world in the 8th century, where the term jya was transliterated into jiba or jyb. Early Latin translations of Arabic mathematical treatises mistook jiba for the Arabic word jaib, which can mean the opening of a woman's garment at the neck. Accordingly, jaib was translated into the Latin sinus, which can mean "fold" (in a garment), "bosom," "bay," or even "curve." Hence our word "sine."

The birth of trigonometry

また新説が。 the opening of a woman's garment at the neck とは女性の服の首回りの開いたところぐらいの意味だろうか。

さて前回の結論としては、アラビア語を調べないと判らない、ということだったので今回はアラビア語。 今まで出てきたどの説もアラビア語は jaib としているが、それらしい単語はむしろ جَيْب (jayb) という形のようだ。 (もちろんアラビア語の transliteration の方式に依るのかもしれないが素直に読めば y に当たる字が入っている)

ここで脱線してアラビア文字について述べておこう(もちろん俄知識である)。 アラビア語の文字は右から左に(主に)子音だけ書くというスタイルで、しかも各文字に語頭、語中、語尾の形があるため、なかなか読みにくい。 今回の単語は ج (jīm) が語頭の形で右側の角張った部分と下の点(ここまでが文字そのもの)と上の´(アの音を表す記号)まで、 次の ي (yā) は語中の形で上に一回持ち上がった部分と下の二つの点(ここまでが文字そのもの)と上の○(母音が付かないことを表す記号)まで、 最後の ب (bā) は語尾の形で二回目に持ち上がった部分から最後まで、と分解される。

話を戻して、この単語の意味であるが、第一義は「胸」のようだ。 たとえば Quran Dictionary - ج ي ب では bosom しか出てこない。 アラビア語検索エンジン アラジン ver.1 では、「胸、胸部」が最初で「穴、くぼみ、空洞」「ポケット」と続き6番目の意味で「[数] サイン」が登場する。

ということで野﨑先生の御説が概ね正しいのだろうと結論づけておく。

2013年12月17日火曜日

sin の語源?

インドの言葉 "jya-ardha" (高さ)が似た発音のアラビア語 "jiba" になり、母音を省いて "jb" のように書く習慣から "jaib" (胸)と混同されてラテン語では "sinus" (胸)に化け、それが今のサイン "sin" のもとだそうです

野﨑昭弘「算数・数学24の真珠」日本評論社 2012

jyā は弦を意味する言葉であり、もともとは半弦を意味する jyā-ardha が使われていたがそれが省略されて jyā が使われるようになったと考えられている。用語 jyā はアラビア語訳されるときにそのまま発音を写して jiba と訳されたが、アラビア語では母音が記されないため jiba と jaib とは同じ綴りとなりいつのまにか「湾」を意味する jaib が使われるようになった。そのためアラビア語の著作がラテン語訳されるときに湾を意味する sinus が使われ、そこから今日の sine が誕生した

上野健爾「円周率が歩んだ道」岩波書店 2013

胸と湾が同じ単語?

sin·us,-ūs m indentation, curve, fold, hollow; fold of toga about the breast, pocket, purse; breast, bosom, lap; bay, gulf, lagoon; winding coast; valley, hollow; heart (e.g., of a city), interior; intimacy

John C. Traupman, Ph.D., The New College Latin and English Dictionary, third edition, Bantam books 2007
両方の意味がちゃんと載っていた。 アラビア語の jaib の意味を調べないとどちらの説が正しいのか(あるいはラテン語同様広い意味をカバーする言葉でどちらも正解か)不明である。

2013年12月15日日曜日

右から割り算

自然数 \(n\) と素数 \(p\) が与えられて、\(n\) が \(p\) で割り切れるかどうか判定したいとしよう。 ふつうは余りを求めて、それが \(0\) だったら割り切れる、それ以外なら割り切れない、と判断する。 しかし、暗算でそんな計算をするとき、思い返してみると右から桁を減らしていくことが多い。 たとえば \(211\) が \(13\) で割り切れないことを確かめようとする場合、1の位の \(1\) を打ち消すために \(91=7\times 13\) を引き、残りが \(120\) だから \(13\) では割り切れない、と思考を進めるわけである。

再帰的にこんな手続き \(f(n, p)\) を定義すればいい。

1. \(n=0\) ならば True を返す。
2. \(n\) が \(10\) で割り切れるならば \(f(n/10, p)\) を返す。
3. \(n\) の1の位と同じ1の位を持つ \(p\) の倍数(のうち最小のもの)を \(kp\) とするとき、\(n\ge kp\) ならば \(f(n - kp, p)\) を返し、\(n< kp\) ならば False を返す。

いくつか注意を述べると、まず \(p\) は \(10\) と互いに素の場合にだけ適用できる。 その \(10\) は \(d\)-進数の \(d\) だと思って良い(プログラムで実現するときは \(2\)-進数で考えることだろう)。 \(kp\) は事前にテーブルを用意しておいて辞書引きすれば良い(というか \(p\) の1の位で \(k\) は決まってしまう)。 特に\(2\)-進数ならば\(k\)は常に\(1\)なので話が簡単である。

他の人、あるいは既存のプログラムで、この方法で割り切れるかどうかの判定を行っている例があるのかどうか知りたいところである。