2009-04-25
「フランクリンの凧問題」というらしい
数学 | |
ここのところ記事を更新していなかったけど、実は、以前書いた三角形の記事の「予想」は正しいと、H.Nakao さんという方からご指摘をいただいて、コメント欄でそれをずっと教えてもらっていました。
ただ結局、コメントにある「Z 係数」のあたりはどうしても分からなかったので、その部分は自分なりに書き換えて、後日ぼくも自分で証明を付けてみようと思っています。
…といっても、近いうちに載せるであろう「証明」は Nakao さんのものであることには変わりありません。
毎日毎日、質問に付き合っていただいて、ありがとうございました。感謝いたします。
主張をもう一度書いておきます↓。元記事と同じです。
※ それと、以後、表記は元記事と同じとします。
主張
下図において、
を
の二等辺三角形とし、
とする。
このとき、
共に整数の組は、自明なもの *1 を除くと、以下の 16 通りである。
- x = 50, y = 20, z = 60
- x = 65, y = 25, z = 85
- x = 60, y = 30, z = 80
- x = 50, y = 40, z = 60
- x = 20, y = 50, z = 10
- x = 40, y = 50, z = 30
- x = 60, y = 50, z = 80
- x = 70, y = 50, z = 110
- x = 30, y = 60, z = 10
- x = 50, y = 60, z = 30
- x = 65, y = 60, z = 85
- x = 70, y = 60, z = 110
- x = 25, y = 65, z = 5
- x = 60, y = 65, z = 40
- x = 50, y = 70, z = 10
- x = 60, y = 70, z = 20
証明のポイント
ぼくが第一に気を付けてるのは、証明に用いるプログラムの中に、「小数点値の等号比較」は絶対に入れないという点です。
元記事は何故×だったかというと、
3. z = 1, 2, ... , 179 において、f(z) = 0 となる z を探す。
の部分を数値計算に落とし込むときに、double 型の等号比較を使ったから。
小数点値の等号比較が入った時点で、それは「近似操作」であり、数学の証明としては不適当なんですよね。
やろうとしている証明は、大まかに言うとこんな感じです。
- すべての x, y = 1, 2, ... , 79、z = 1, 2, ... , 179 について、以下の操作を行う。
- 各 x、y、z に対して定まる f :=「
の虚数部分」*2 を、ζ:=
の Q 係数 *3 有理式として表す。
- 「Q 係数有理式 = 0」を変形して、同値な関係式「ζの Q 係数多項式 = 0」とする*4。この「ζの Q 係数多項式」を g(ζ) (∈Q[ζ]) とする。
- ζの Q 上最小多項式 T^96 + T^84 - T^60 - T^48 - T^36 + T^12 + 1 を φ(T) と書く *5 。また、g(T) (∈ Q[T]) を φ(T) で割った余りを ψ(T) (∈ Q[T]) とする。ここで、「 g(ζ) = 0 ⇔ ψ(T) = 0 *6」なので、「g(ζ) = 0」を調べるのには「ψ(T) が 0 である」ことを調べれば良い。
- 各 x、y、z に対して定まる f :=「
元記事で double 値の等号比較をしてたところを、有理数係数多項式の係数が 0 かどうか、つまり、有限個の有理数列の等号比較に帰着させているわけです。
(有理数は整数 2 つの組を "ある同値関係" で割って定義されるので、小数点値を出さずに済むはずです。)
数学ではよく使ってた手だけど、こうやって数値計算上の困難を解決するのに使うのは思いつきませんでした。
証明に用いるプログラムは
ただ、
という懸念 (※) は未だ残っているんですけどね。。
感想
まだ完全に解いたわけじゃないけど、とりあえず現時点で思ったことをメモしておきます。
- いろんな例を計算するのに使うならともかく、証明の部分にコンピューターを使うのはなかなか厄介だと思った。(※)の部分のように、「この言語 (もしくは数式処理システム) は本当に自分の証明に使えるのか?」という部分のチェックが本当に面倒そう。
- 言語 (もしくは数式処理システム) バージョンが上がるごとに、1 のチェックをしなくてはいけないのだろうか??正直それは避けたいなぁ…。
- 中学の知識で解けるはず?の問題が、こんな代数的な問題に変形されてしまった。。でも、個人的には、極一部の人にしか見つけられないパズル的な、アクロバティックな解法より、(同じ『極一部』であっても) 「お作法」を身につけさえすれば自然に見えてくる解法のほうが美しいと思う。
2009-02-02
「espressione」を最初に音楽用語として使ったのは、モーツァルトなのか??
音楽 | |
「espressione」は、「白水社 新伊和辞典」によると、
(女性名詞)
- 表現、表現法
- 語句、語法
- 表情豊かな顔つき
- (数学) 式
という意味で *1、英語でいうところの「expression」に対応する言葉だとぼくは思っています。
最近知ったのですが、この言葉は、割と新しい言葉らしく、今道友信さんの「美について」
- 作者: 今道友信
- 出版社/メーカー: 講談社
- 発売日: 1973/06/20
- メディア: 新書
- 購入: 1人 クリック: 11回
- この商品を含むブログ (17件) を見る
という本には、こう書かれていました。
このようにして、内的な世界の自己提示として、自己から絞り出すようにしてその感懐を物質の世界に投影するのが、芸術創作の新しい理念として登場してきた "表現" である。この "表現" に対応する言葉は、周知の通りに、古典ギリシア語や古典ラテン語にはなく、エクスプレシオ (expressio) というラテン語である。その当初の意味は果物の果汁を絞り出すという農業用語であり、意外に思う人もいるかと思うが、ゲーテの時代にも、ドイツ語ではまだ "表現" にあたるアウスドルック (Ausdruck) という言葉すらなかった。"表現" は西洋の芸術思想に関する限り、十九世紀から二十世紀にかけてはじめて美学上の市民権を獲得した現代的理念に過ぎない。*2
そうすると、当時、現代的であった「espressione」という単語を最初に音楽用語に使ったのは誰なのか?という疑問が自然に湧いてくるのですが、現時点では、モーツァルトがピアノソナタ K.310 の第 2 楽章 (Andante cantabile con espressione)
で使ったのが最初なのではないか…?と推測しています。
それにしても、、何度聴いてもいい演奏ですよね…*3。
あと不思議なことに、モーツァルトが「espressione」という単語を使ったのは、現在調べた範囲では K.310 だけのようです (※) *4。
K.310 が作曲された 1778 年夏は、モーツァルトの母アンナの亡くなった時期なんだけど、それとは関係があるのでしょうか??
そのちょっと後の世代の作曲家であるベートーヴェンが、「espressione」をしょっちゅう使ってた *5 のとは対照的です。
現時点で調べたのは、K.310 以前ではこの 5 冊
- ハイドン ピアノソナタ全集 第 2 巻 (ウィーン原典版)
- モーツァルト ピアノソナタ集 第 1 巻 (ウィーン原典版)
- モーツァルト ピアノソナタ集 第 2 巻 (ウィーン原典版)
- モーツァルト ピアノのための変奏曲集 第 1 巻 (ウィーン原典版)
- モーツァルト ピアノとヴァイオリンのためのソナタ 上巻 (ベーレンライター)
だけなので、もっと調べて信憑性を高めていかねば。
イタリア、フランスの音楽について全然調べてない (うちに楽譜がない…) ので、リサーチ不足と言われても仕方ないですね。。
メモ
(※) の主張の正否については、モーツァルトの全楽譜が公開されているわけだし、
参考:「NMA オンライン」 Parallels Confixx
時間さえかければきちんと調べることが出来るだろうけど、さすがに大変だよなあ。。
楽譜の画像情報から文字情報を検索する、みたいな技術ってないのかなぁ。
2009-01-29
予想
数学 | |
の続きです。
前の記事の問題 1 で不必要に時間をかけすぎたせいか、ただ 1 問解いただけではなんだか報われない気がするので、何か適当な結果を捏ち上げるために (笑) こんな予想を立ててみました。
予想
下図において、 を
の二等辺三角形とし、
とする。
このとき、 共に整数の組は、自明なもの *1 を除くと、以下の 16 通りである。
- x = 50, y = 20, z = 60
- x = 65, y = 25, z = 85
- x = 60, y = 30, z = 80
- x = 50, y = 40, z = 60
- x = 20, y = 50, z = 10
- x = 40, y = 50, z = 30
- x = 60, y = 50, z = 80
- x = 70, y = 50, z = 110
- x = 30, y = 60, z = 10
- x = 50, y = 60, z = 30
- x = 65, y = 60, z = 85
- x = 70, y = 60, z = 110
- x = 25, y = 65, z = 5
- x = 60, y = 65, z = 40
- x = 50, y = 70, z = 10
- x = 60, y = 70, z = 20
x と y をひっくり返しただけ、というのもあるので、この条件下で、本質的に異なる非自明な (x, y, z) の組はたった 8 組だけ、 という予想になります。
もしこれが正しいとすると、、中学で出てきた図形の角度を求める問題って、かなり特殊な状況下での出来事だったんですね。
中学の図形問題を作るのって、大変だったんだなぁ。。
メモ
この「予想」はどうやって立てたかというと、アイデアは前の記事と全く同じで、あとは C++ でコードを書いて、それを実行して出しました。
具体的には、以下の通りです *2。
-
を x、y で表す。
-
の虚数部分は z の関数になるが、それを f(z) と書く。
- z = 1, 2, ... , 179 において、f(z) = 0 となる z を探す。
- 1 〜 3 の作業を、すべての x, y = 1, 2, ... , 79 について行う。
この 8 通りについては、前の記事と同じように証明すれば良いと思うんだけど (えげつなさそうなのも幾つかあるけど)、問題は、
- 数値計算で f(z) ≠ 0 と結論付けてしまったものが、ホントに f(z) ≠ 0 なのか?
というところだと思います。
C++ のコードのほうでは、「f(z) の絶対値が DBL_EPSILON より小さいかどうか」でアルゴリズムの 3 の部分の判定を行っているのですが、
- 数値計算の結果、絶対値が DBL_EPSILON より大きくなってしまったけど
- 実際は 0 に等しい
ということもありうるわけですからね *3。
その辺りのチェックが難しそうです。
もし何か進展があったり、間違いを見つけたりしたら、更新していくことにします。
H.Nakao
nthrnさんの予想は正しいです。
条件を満たす整数の組(x,y,z)で、0<x<y<80, 0<z<180を満たすものは
8個です。xとyを入れ替えて、同時にzと(x+y-z)を入れ替えたものも考えると、その2倍の16個(上記で求まったものだけ)となります。それ以外には解はありません。
円分数を使うと簡単に証明できます。
nthrn
> H.Nakao さま
コメントありがとうございます。
「予想」が合っててホッとしました。
でも、自力で解けなくてちょっと悔しいですけどね…。
円分体か…、なるほど、思いつきませんでした。
証明はまだフォローできてないので、フォローし次第、
新規に感謝の記事を書くことにします。
(仕事もあるので、時間がかかるかもしれませんが。)
リンク先のサイトをチラッと見たのですが、楕円曲線が
ご専門なのでしょうか。
ぼくは楕円曲線には全然疎いので、もしかしたらまた
教えていただく機会があるかもしれません。
そのときは、よろしくお願いいたします。
nthrn
証明を見てみました。
ですが、申し訳ないのですが、ぼくが分からなかった
部分については、まだ疑問が残っています。
(まだ「疑問」の段階なので、コメント欄に書かせて
いただきます。)
ぼくが本記事に書いた「分からない点」は、
(ニュアンスがうまく伝わらなくて申し訳ありません。)
(※) double 型、もしくは多倍長小数型の等号比較を、
数学の証明で使って良いのか?
という点です。
それと、たとえ int 型で等号比較してたとしても、
計算途中で double 等が出てきて、それを int に
型変換しているおそれもあります。
double 型の場合は、a と b の等号比較は
「fabs(a - b) < epsilon」か否か
(ただし、epsilon は DBL_EPSILON もしくはコード
を書いた人が必要に応じて設定した値)
で行ってるので、それを信じて数学的な意味で「同じ」
としてしまっていいのか、、というところが怖いわけです。
ですので、現時点ではぼくは「予想」と言っています。
Nakao さまの Web page
http://www.kaynet.or.jp/~kay/misc/cf360.html
で、実際に整数かどうかを判定しているところは
ここ↓だと思うのですが、
> 正整数の組(s,a,b,c,d)(ただし、b < c)に対して、
> γ=ω/(ω~)の偏角が2t°になるかどうかを調べる。
> |γ|=1なので、γ=ζ2t(0 < t < 90)となるかどうかを
> 確認すれば良い。
ここの判定の部分で pari/gp を使っているとのことですが、
http://www.math.u-toyama.ac.jp/~iwao/pari-gp.html
によると (ぼくはこのライブラリは使ったことはないので、
適当なことを言ってたら申し訳ありません。) 、『C 言語
用の library Pari と...』と書かれているので、内部
では C が動いている、ということですよね。
そう考えると、多倍長小数型の値の等号比較の部分で、
"等式の代用として" 何らかの不等式を使ってるわけで、
最初に述べた自分の問題 (※) がまだ分からないまま
残ってしまうと考えるわけです。
このあたりのことについて、何かご存知でしょうか。
それとも、円分多項式を使うことで、プログラム上で
「double 型の等号比較」が出てこないようにしているの
でしょうか?
(ぼくが何かものすごい勘違いをしているという可能性も
ありますが。。)
何かご存知のこと、もしくはヒントなどがございましたら、
コメントよろしくお願いいたします。
H.Nakao
pari/gpのプログラム中で、γ=ζ^(2t)かどうかの判定部分は、double floatの等号比較を行っているわけではありません(整数の四則演算と比較のみで可能です)。各t(0<t<90)について、円分体Q(ζ)の元γ-ζ^(2t)は、実は代数的整数環Z[ζ]の元であり、それが0に等しいかどうかは、Z係数の円分多項式による割り算・余りの計算で、簡単に判定できます。
nthrn
お返事、ありがとうございます。
だいぶ流れが分かってきました。
下の 2 つが分かれば、Nakao さまの証明は理解出来たと
思います。
もう少し考えてみます。
====================
■(1)
γ-ζ^{2t} が、『Q[ζ]の元』であることなら分かる。
(ζは Q 上代数的なので、Q(ζ) = Q[ζ] だから。)
そこから、これが Z[ζ] の元であることを言うにはどう
するのか?
■(2)
(1) を認めて γ-ζ^{2t} ∈ Z[ζ] であることを言ったとして、
そこから、
f(x) ∈ Z[x]
s.t. f(ζ) = γ-ζ^{2t} (※※)
を満たすモニック多項式 f(x) をどのように求めるのか?
(この部分を pari/gp でやったのですか?)
====================
(2) を認めるならば、
> それが0に等しいかどうかは、
> Z係数の円分多項式による割り算・余りの計算で、
> 簡単に判定できます。
これ↑は分かります。
(※※) の f(x) を、ζの Q 上最小多項式
x^96 + x^84 - x^60 - x^48 - x^36 + x^12 + 1
で割って、その余りを調べる、というので良いのですね。
f(x) を、上の最小多項式で割った余りを g(x) とする
ならば、
g(x) = 0 <=> g(ζ) = 0 (つまり f(ζ) = 0)
なので。
nthrn
ごめんなさい、リンク先のページに、証明に使ったプログラムの
ソースコードが置いてあったのですね。
(完全に見落としていました。。)
コードを読んで、分からなかったら再度コメントいたします。
H.Nakao
nthrn さんの指摘のように、一般にγ-ζ^{2t} がZ[ζ]の元になるというのは間違いで、Q[ζ]の元になるというのが正しいです。ただし、問題が解ける(条件を満たす整数x,y,zが存在する)場合に限れば、Z[ζ]の元になります。
2009-01-28
中学数学に大苦戦!
数学 | |
問題 1
下図において、 を
の二等辺三角形とする。
このとき、 を求めよ。
この手の問題なら、複素数平面で考えて偏角出せばカンタンに解けるだろう、と思ってたのですが、、
計算してもしても式が簡単にならない!
の 10 何次式、とか出てきてましたからねぇ。。
1 週間近くずーーっと、ひらのの日記 の準備も、 5 月に弾くパルティータ第 2 番の譜読みもせずに、この計算ばかりしてたのですが、全然進みませんでした。
一昨日、ついにこの状況に我慢ができなくなって、分度器を買ってきてそれらしい図を描いて、実際に角度を測ってみました。
そしたら 16 度っぽい数字になったので、この辺の値にならないかな〜と再度計算したけど、上手く行かず。。
そんなとき、たまたまこのサイト↓
を見つけて愕然としました。
どうやら、問題 1 の設定が違ってたようです。がーん…。
- ∠
のときに、
になるみたいです。
この証明 (∠ の場合の証明) を以下に付けておきます。
おヒマな方はどうぞ。
あと、間違いなどがあったら教えてください。(急いで書いたので。。)
その前に、表記と方針を書いておきます。
表記
方針
-
の偏角を求める。
- その為に、辺
の長さ、辺
の長さを、初等幾何の方法で求める。
証明:ステップ 1 (辺
の長さ、辺
の長さを求める)
は、
の二等辺三角形になるので、
になる。
について正弦定理を適用すると、
より、
となる。
証明:ステップ 2 (複素数平面の問題として証明する)
まず、ステップ 1 より、
である。
よって、 を示すためには、
が、
(r は実数)
という形で書けることを示せばよい *2。
つまり、
…(★)
が実数、言い換えれば虚部が 0 であることを示せば十分。
(★) の虚部は
であるが、
なのだから、これは 0 になる。 (証明終)
言い訳、その他
- これは、「x が 30 度」だと見当がついていた場合の証明方法なので、角度が分からない場合だと使えないですね。
2009-01-21
数学の記号
memo | |
数日前、友人から、
「数学の記号の『 』ってどういう意味?」
と質問されました。
数学基礎論の授業でこの記号を見た覚えがあったので、「\vdash 基礎論」で google 検索をかけて、この記号が「証明可能」という意味だということを思い出したんだけど *1、これは結構ハードルが高い作業だと思います。
実際、「 」の意味をネットで検索するためには、
ということが分かっていないと出来ないはずです。
(誰か、これ以外のアイデアでこの記号の意味を調べることが出来た人はいますか?)
ぼくは前々から「数学と Web とは相性が悪いのではないか」と思ってるんだけど、「数学の記号や数式を検索するのが難しい (もしくは手間がかかる)」のも、その原因の一つな気がします。
追記 (1/22)
isao さんのコメント (2009/01/21 20:58) を受けて、数学の直和 *2 記号「」でも似たことが出来ないか、調べてみました。
「」は「\oplus」と書くので (「O」に 「+」なので、そのまんまですよね!)、「\oplus 数学」で検索をかけても…、適当なのが出てこない!!
保健所の地図記号 *3 とほとんど同じなので、「数学記号 "保健所みたい"」で検索したら、見事に 0 件でした。。残念。
同様に、テンソル積の記号「」を「数学記号 "警察署みたい"」で google 検索しても無理でした。笑
isao
論理学に割りとお世話になったので、見慣れた記号です。
論理的帰結とか演繹可能の意ですよね。
「数学記号 トみたいな」
っていうキーワードでも一番上に引っかかります(笑)
ってかプレーンなテキストで書くんだったら、|- って書くのでこれが検索できるといいんですけどね。
nthrn
なるほど〜。
日本語の形を使って検索するのね。
欧米の人がどうやって調べるのか気になるところだけど。
> ってかプレーンなテキストで書くんだったら、|- って書くのでこれが検索できるといいんですけどね。
google のサポートサイトを見てみると、下のように書いてあるね。
http://www.google.co.jp/support/websearch/bin/answer.py?answer=430&topic=359
確かに「C++」なんかは普通に検索できるもんね。
考えたことなかったよ。
============================================================
検索機能に関するトラブルシューティング: 記号の使用
Google では、感嘆符、疑問符、@ 記号などの特殊文字を含むキーワードを認識しません。これらは頻繁に使われる文字であるため、検索に反映させた場合、検索結果の表示に著しく時間がかかる可能性があるからです。さらに、たとえば "Mr." および "Mr" のように、ウェブでの句読点の付け方は一貫性がなく、クエリに含んだ場合、検索結果に対して良い影響よりも悪い影響を与える可能性が高くなります。
Google では現在、すべての特殊文字を認識する設定にしていませんが、多くの有用な検索用語にはそうした文字を含むものがあります。"C++" や "$10" のような用語は例外として検索することができますが、"C/net" のような検索用語についても検索できるように努力しております。
============================================================



http://ja.wikipedia.org/wiki/%E5%85%89%E5%AD%A6%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98
詳しいね。
それとも、エンジニアとしてはそのくらい知っとけ、ってこと?
ひとつ気になるのは、楽譜から文字情報を読み取るときには、除去
しないといけない情報が非常に多くなることかな。
楽譜から文字以外の情報を除去して、そこから文字を認識するのは
結構しんどそうな気がする。
記憶の片隅にでも留めておけたらいいんじゃないかな。
OCR は活字がメインだったと思うから、
どこまでメモみたいなフリースタイルに対応できるのか気になるところではあるね。