岡竜之介のブログ

岡竜之介のブログです。

マッチングアプリのノウハウ記録

私がたどり着いたマッチングアプリのノウハウを書き出して記録しておこうと思います。

ちなみに男性向けです。女性でも通用するかどうかはわかりません。

また、あくまで私の体験に基づくものなので、本人のキャラクターや所属文化圏によっては全然違うかもしれません。

プロフィール写真

まず何より重要なのはプロフィール写真です!

恐らく半分以上の人は、LIKEするかしないか判断する時にここしか見ません!(半分以上という数値に根拠はないです)

この記事は写真についての所だけ見て、あとは全スルーしても、全部読んだ場合と比べて80%程度の効果はあると思います!

写真を撮ってもらう

この記事にたどり着いた男性陣は恐らくプロフィール写真を設定するときに

「そもそも写真がない」という困り方をしてると思います。

男ってあんまり自分たちの写真撮らないので!

これはもう、撮りに行くしかないです。

写真屋さんに申し込むのではなく、友達と観光地に遊びに行きましょう

で、自分の写真を撮ってもらいましょう。

1回遊びに行って200枚くらい撮ってもらえば、詐欺みたいな写真が1つくらいは生成されていると思います。

面倒でも、全てのフォトスポットでいちいち友達に自分のスマホを渡して撮ってもらいましょう。

目的が一致してる友達と行って互いに撮りあえるとラクでしょうね。

なお、自撮りはあんまりよくないと思います。映りも良くならないし、自撮りってわかるので友達いないように見える。

写真を選ぶ

たくさん撮ってもらった写真の中から、採用する写真を選ぶわけですが、

可能なら異性の友達に選んでもらいましょう

自分でいいと思うものと、他人(特に異性)から見ていいと思うものは異なる可能性があるので。

200枚全部見せるのは効率が良くないので、いくつかに絞るところまでは自分でやってもいいと思いますけどもね。

異性の友達がいなければ同性の友達に頼みましょう。

プロフィール

プロフィールは詳しく描きましょう!人柄がわからなければ興味も湧きませんから!

自己PR

当たり前ですがプロフィール欄には自己PRを書きます。

この時のコツとして、相手に話題にさせやすいことを書くといいと思います。

相手もこちらのことを何も知らないわけですから、当然話題に困ってます。

「ところで、◯◯さんって△△なんですね!」と相手が言いやすい内容を載せておくといいと思います。

どう言及して欲しいかまで考えて項目列挙しておくといいでしょう。

「◯◯さんって△△なんですね!すごいですね!」
「◯◯さんって△△なんですね!びっくりしました!」
「◯◯さんって△△なんですね!そういう人と初めてお話ししました!」
「◯◯さんって△△なんですね!私もなんですよ!」
「◯◯さんって△△なんですね!めちゃくちゃわかります!」

などですね。

「そもそも書くことがない」という場合は…まあ頑張って思い出すか、作るしかないでしょうね。

特徴がないままで選ばれるのは不可能なので、これは作るしかないです。

まあ、写真さえちゃんとすれば別にいらないかもしれませんけどね!

プロフィール上部

写真の次に見られるのが「プロフィールの上部」です。

アプリによっては、写真が出る時に重ねて表示されてる部分ですね。

「詳細」ボタンなどを押さなくてもはじめから見えている所です。

先ほどの自己PRの中で、一番インパクトのあるものを置いておくといいでしょう。

私の場合は「東大卒」と「M1グランプリ2回戦進出」と「痩せ型」を書いてました。

反応がよかったのは「M1グランプリ2回戦進出」です。

これは「M1グランプリ出場」でもいいと思います。

M1グランプリって実は誰でも出られるのですが、実際に出た人は珍しいのでかなり引きがあります。

M1グランプリってあのM1ですか???あれに出たんですか?すごいですね!」とよく言われました。

自己PRが何もない人は出てみるといいと思います!

「東大卒」はあまり言及されませんでしたが、これを見てLIKEした人はそこそこいるんじゃないかなと思ってます。知らんけど。

「痩せ型」だけ見てLIKEしてくれた、と言っていた人もいましたね。

体系がたまたま「痩せ型」や「高身長」の人は、それ武器なので必ず書きましょう。

目的を明かしておく

もう一つ。プロフィールには「会って何するつもりなのか」を書いておくべきでしょう。

カフェでお茶したいのか、ランチで和食を食べたいのか、お酒を飲みに行きたいのか、カラオケに行きたいのか、ドライブに行きたいのか。

もっと具体的でもいいですね。

カフェにケーキを食べに行きたい
カフェにコーヒーを飲みに行きたい
日本酒を飲みに行きたい
ウイスキーを飲みに行きたい
カラオケでGreeenを歌いたい
ドライブで◯◯展望台に行きたい

など。

初回からカラオケやドライブは避けられる恐れがあるので

「まずはカフェでお会いして、仲良くなったらカラオケに行きたいです。BUMP OF CHICKENが好きでよく歌います」みたいな感じでもいいと思います。

私は「カフェで作業や勉強をする仲間が欲しい」と書いていました。これは嘘でもなんでもなくマジのガチです。

会ったあと何をするのかイメージが湧かない状態では、「会ってみようかな」とはならないでしょう。

会ったらどんな感じの時間になるのかが具体的に想像できる方が、安心して「会ってみよう」と思えると思います。

趣味

あとは私の場合は、趣味を列挙して少しでも共通点がある人に興味を持ってもらうようにしていました。

趣味から、かなり人柄が知れますからね。

また、共通趣味が一つでもあれば、それを話題に盛り上がれる可能性があります。なのでできるだけたくさん書いておくべきですね。

「趣味ないんだよな…」と思う人もいるかもしれませんが

ちゃんと思い出したらそんなことないはずです!

「たまにやってるけど趣味とまでは言えないな…」なんてことはないのでそれを書きましょう。その「たまにやってる」ことを趣味って言うんですよ。

直近5年で2回以上触れたものは趣味です!書きましょう!

メッセージ

メッセージ1通目

1通目のメッセージはかなり大事です。

女性側には毎日アホみたいな数のメッセージが届きます。(いや、本当の所は知らんけど、そう考えましょう。)

当然、大半のメッセージは見た瞬間にスルーされます。

マッチしてメッセージを送る権利を獲得したとしても、メッセージに返信が来る確率は30%くらいです。

パッと見で「ん?」と思わせる、差別化が必要です。

私はちょっとふざけて

「マッチありがとうございます。それでは探り合いを開始しましょう。」

みたいなメッセージを送ってました(本当に送っていたものとは少し変えてます)

相手は「しましょう。」「探りましょう笑」などと返してくれていました。

返事が「しましょう。」で済むのもポイントですね。質問されていないから答えを考える必要がないし、新たに話題を提示する必要もない。

一回返事がもらえれば、もう一度返事が貰える確率はかなり上がります。70%くらいに。

良くない例

「LIKEありがとうございます!どんな所が気になってLIKEしてくれたんですか?」
これ、言いたくなりますが、良くないと思います。ほぼ「俺を褒めろ」と同義ですし。

相手からすると「いや、なんとなく…」というのが、恐らく正直な所です。

動機を言語化するのは案外面倒なので、その手間をかけさせてしまうと、途中で返信を放棄される可能性が高まります。

会う打診までのやりとり

バランスよく相手のことを聞いたり自分の話をしながらメッセージのやりとりをしましょう。

この時、メッセージはできるだけ即座に返しましょう。

もし相手も即座に返す人だった場合はチャットのようになりますが、その場合は10往復くらいしたら一回休んでもいいと思います。

基本的に返信が遅い人は切られます。なんなら、「返信が遅い人は嫌」とプロフィールに書いてる人も多いくらいです。

5往復くらいしたらLINEなどに移動することを提案してもいいし、しなくてもいいと思います。

そして、会う打診をすることを考えるわけですが、

10往復くらいしたら、会う打診をするといいと思います。

メッセージ開始してから2日以内くらいに会う打診まで行きたい所です。

メッセージを開始してすぐ打診すると引かれますが、遅すぎると相手が冷めてしまいます。相手がメッセージを返してるときは「誰かと会おう」というモチベーションが高いわけなので、その熱量があるうちに打診すべきですね。

打診して好感触だったら、時間と場所まで決めてしまいましょう。これもすぐ決めるべきです。決めずに放置すると相手が冷めてしまいます。

ちなみに、できるだけ近い日に設定すべきです。

当日まで

アポを取ってから当日までのやりとりですが、ここは正直かなり難しいです。

まったくやり取りしないとフェードアウトする可能性が高まりますが、かと言ってまだあんまり知らない相手と話題を保たせるのは大変です。

ここのノウハウに関しては、私もあまりわかってないです。2〜3日に一回くらいメッセージを送ってもたせるようにしていましたが、あまりアポが遠い場合は返信も来なくなってフェードアウトというのもありました。

なので、やはりアポはできるだけ近い日に設定すべきです。

当日

服装・髪型・メンズメイクなど

これは私が言えることは何もないので割愛します。わからなすぎる。他で調べて!!

喋りについて

当日のおしゃべりについて私が意識していたのは「褒める」「相手に興味を持つ」です。

褒める

「褒める」は慣れてないと、口に出すのに勇気がいるものですが、だからこそ褒められると効きます。

調べると「◯◯を褒めろ!」とかいろいろテクニックが出てきますが、とりあえず「◯◯さん、かわいいですね。」って言うだけでもいいと思います。頑張って勇気出して言ってください。言う回数は多ければ多いほど良いです。

相手に興味を持つ

「相手に興味を持つ」も大事です。

普段他人に興味を持たない我々のような人には難しいですが…。

相手は自分と異なる人間なので、自分と異なる点が必ずたくさんあります。

そこをいろいろ聞いてみて、「そうなんだ。」「そんなことあるの??」と心から思ってリアクションできるといいですね。

興味って、「ある」とか「ない」とかじゃなくて、持とうとして持つものなんですよ。(無理なこともあるけど)

ただ質問攻めにはならないように、自己開示も織り交ぜながらバランスよく話しましょう。

小手先のテクニック

あとは、「傾聴」「オウム返し」みたいなテクニックを使ってみるといいですね。調べると出てきます。

特に「オウム返し」は死ぬほど簡単に相手に話を続けさせることができるのでラクです。多用するとバレますが。

ドタキャンについて

ドタキャンやバックレをされるのは日常茶飯事です。

アポを取り付けても、実際に来てくれる確率は50%だと思いましょう。

どっちに転んでもいいように、「来なかったら電気屋に買い物行く」など、セカンドプランを持っておくといいでしょう。

来てくれたらラッキー。「来てくれてありがとう」くらい本人に言っちゃっていいと思います。

10分くらい待って連絡がつかなければ、来ないと判断していいでしょう。

当然、それをされて怒ることもないです。

ただ、ドタキャンやバックレは、自分はしないようにしましょうね。

私は一回もしたことないです。

二回目以降

二回目以降に会うときは、初回じゃない故の難しさというのがあります。

1回目は相手のことを何も知らないので、何でも聞いちゃえばいいんですけど、

2回目以降は、表面的な質問は聞き終わっているので、話の内容選びが一気に難しくなります。

対策はなかなか難しいですが…

1回目に聞いた相手の趣味を、2回目までに自分もやってみて、それについて話す場にするとかかな。

なかなか大変そうですが、逃したくない相手だったらそこまでするべきでしょうね。

数字感について

数字感についてです。

仮に1人と付き合うことを目的とした場合、

300人とマッチして

100人とやりとりして

10人と会って

1人と付き合う

くらいの感覚だと思います。

この間1〜3年くらいかな。

そのくらいの長期スパンで気長にやるのがいいと思います。

一人とうまくいった・いかないであんまり一喜一憂するともたないです。

正直ヤリモクですという場合

別にそれでも、この記事の内容がそのまま通用すると思います。

あとはもう、勇気を出して誘えるかどうかです。

「よかったらこのあとホテル行きませんか?」

かなりストレートですがこれでいいです。

8割がたダメに決まってるんだから、あんまり期待せずとっとと言いましょう。

OKしてもらえたら、よかったね!

「完全数」って何が面白いの???→完全数みたいな概念を量産する

完全数とは

完全数とは「約数のうち自身を除いたものの和が自身に等しい」ような数のことです。

例えば6は、約数が1,2,3,6なので、このうち6以外を足すと1+2+3=6で、6自身に等しくなります。

だから6は完全数です。

完全数はなかなかに珍しく、1から100万までの中に

6, 28, 496, 8128

の4つしかありませんし、現在までに51個しか見つかっていません。


「偶数の完全数は無数に存在するか?」「奇数の完全数は存在するか?」という問題は未解決で、しばしば話題に上がります。


……それはいいんですが……。。。。。。

完全数」って何が面白いの???


完全数」って何が面白いの???

「自身以外の約数の和が自身に等しい」という性質ってなんか、すごく人工感があるというか…それに注目する意味がわからないというか…


「自身を除く約数の和」の「自身を除く」っていうのも、ご都合主義感あるし…


「珍しい」は注目する理由として一理あるけど、「珍しい性質」なんて無限に作れそうというか…


…のようなツイートをした所…。


偶数の完全数メルセンヌ素数と一対一対応するそうです。

奇数の完全数は未発見なので、これが「ない」ということになれば、完全数メルセンヌ素数は一対一対応します。

メルセンヌ素数は便利な素数判定法があって、コンピューターサイエンス上も重要な応用があったりして有意義ですよね。

となればそれと一対一に対応する(と思われる)完全数も有意義と言えそうです。


…タイトルの疑問、解決してんじゃねぇか!!


…ということですいません。煽りタイトル付けました。


本題はここからです。




「自身以外の約数の和が自身に等しい」みたいな『珍しい性質』を無限に作れるかどうか考えるのは楽しそう😀!


こういう「珍しい性質」を大量に作れるのであれば、完全数」なんてone of themであり、大して重要な性質ではない!(メルセンヌ素数と一対一に対応する?ちょっと忘れましたね……)

完全数の定義を言い換えて一般化する


「約数のうち自身を除いたものの和が自身に等しい」


「約数の和が、自分自身の2倍に等しい」と言い換えられます。


となると、


「約数の和が、自分自身のn倍に等しい」と一般化できそうですね????


実は既にそういうものは考えられておりまして


「倍積完全数」というようです。


ja.wikipedia.org



通常の「完全数」は「2倍完全数」のことですね。


それらの性質をWikpediaから引用すると…

k倍完全数が無数に存在するかどうかは分かっていないが、3倍完全数は6個、4倍完全数は36個、5倍完全数は65個、6倍完全数は245個がそれぞれ発見されており、これより多くは存在しないと言われている。


例えば3倍完全数は100万までの範囲には3つあり、現在までに全部で120, 672, 523776, 459818240, 1476304896, 51001180160の6個が発見されていますが、この6個しかないかどうかはまだわかっていないようです。


なんだ、「完全数」なんて「2倍完全数」とか「3倍完全数」とか「300倍完全数」とかいくらでも考えられる中の、単に「2」の場合に過ぎないじゃないか!

倍積完全数の定義を言い換えて一般化する

さらに広げてみましょう。

倍積完全数の定義

「約数の和が、自分自身のn倍に等しい」

は、

「約数の和と自分自身が n:1 の比になる」

と言い換えることができます。

ということは

「約数の和と自分自身が a:b の比になる(a,bは互いに素な正の整数) 」


と一般化できそうですね?


通常の完全数は(a,b) = (2,1) の場合です。100万までに4つあります。

3倍完全数は(a,b) = (3,1) の場合です。100万までに3つあります。


ここまでを踏まえて、こんな問題を考えることができそうです。

今回考える問題

1から100万までの数を「a:b = 約数の和 : その数自身」という比によってグループ分けする。
もっと多くのグループメンバーを持つ比(a:b)は何か。


これが、完全数の 2:1 が一番多くて、あとはみんなグループメンバーがそれより少なくなるようにバラバラになるなら、完全数は確かに注目に値すると言えそうです。

でも、そこそこメンバーを獲得するグループが多数出てくるようなら、完全数なんてそれらのグループの一つに過ぎないわけですね??


ということで。

調べてみました。1から100万までの数を「約数の和 : その数自身」という比によってグループ分けしてみました。

そのTOP10を発表したいと思います!

グループメンバーの多かった「比」ランキング!TOP10!

同率一位

(8 : 3), [84, 270, 1488, 1638, 24384]
(12 : 5), [30, 140, 2480, 6200, 40640]
(16 : 5), [420, 7440, 8190, 18600, 121920]
(32 : 11), [924, 2970, 16368, 18018, 268224]
(48 : 17), [1428, 4590, 25296, 27846, 414528]
(48 : 19), [570, 2660, 47120, 117800, 772160]
(52 : 15), [1260, 22320, 27000, 55800, 365760]
(56 : 15), [16380, 290160, 351000, 669600, 725400]
(64 : 23), [1932, 6210, 34224, 37674, 560832]
(80 : 29), [2436, 7830, 43152, 47502, 707136]
(112 : 41), [3444, 11070, 61008, 67158, 999744]
(144 : 55), [330, 1540, 27280, 68200, 447040]
(160 : 57), [1596, 5130, 28272, 31122, 463296]
(168 : 65), [390, 1820, 32240, 80600, 528320]
(216 : 85), [510, 2380, 42160, 105400, 690880]
(288 : 115), [690, 3220, 57040, 142600, 934720]
(304 : 111), [3108, 9990, 55056, 60606, 902208]

以上17グループ、グループメンバー数5で同率一位!


いや同率一位多いな!

しかも完全数の(2:1)は1位じゃないのかよ!


ということで。同率一位だけでTOP10は超えました。


どうやら完全数の(2:1)というのは特別メンバーの多いグループというわけでもなさそうです。

もちろん、特別メンバーの少ないグループというわけでもない(このランキングの下位には、メンバーになる数字が1つしかないグループが並ぶ)


つまり完全数というのは、今回考えたグループ分けの a:b = 2:1 のグループに注目したに過ぎない!

なんだ!やっぱり全然大した性質じゃないじゃないか!


…いや、メルセンヌ素数と一対一に対応するのは十分注目に値する性質な感じがします。タイトルでふざけてすいませんでした。

感想


ところで、グループメンバー数が多くなる「比」に全然脈絡がないように見えるのですが、何か法則が隠れているんですかね??


(8 : 3)
(12 : 5)
(16 : 5)
(32 : 11)
(48 : 17)
(48 : 19)
(52 : 15)


100万までで切っているので、もっと大きな数までやると違う並びになる可能性も大いにあるので、現状のこの並びには意味がないのですが、

とはいえ、何か「約数の和 : その数自身」という比として現れやすい比があるのかな?と。

どうでしょう。

不定方程式を解こう!

ベズーアプリアイコン

不定方程式って何?

不定方程式の話します!想定読者数学レベルは中学レベルです。

突然ですが、こちらの方程式を考えてみましょう。


10x + 13y  = 161

この方程式は「不定方程式」と呼ばれるものの一種です。

普通、文字が2つ入った方程式は式も2つないと答えが決まりませんが

この問題は式が一つしかありませんので、答えが定まらないという意味で不定方程式と言います。


実際、この問題は答えが無限にあります。


\displaystyle
y = -\frac{10}{13}x+\frac{161}{13}

と変形できますので、xにどんな数を入れても、それに合わせたyが決まります。

答えを整数に限る

それではあまりにも何でもアリなので

答えを整数に限ることにします。

すると、たちまち手間のかかる問題に変貌します。

実はそれでも答えは無限にあるのですが、


10x + 13y  = 161

を満たす整数xとy、すぐに見つかりますか…?

一つ見つけるだけでも案外大変なんですね。

なのでこの記事では、答えを一つ見つけることを目標にします!

解けない場合もある



10x + 12y  = 161


例えばこちらの方程式。

さっきとちょっと変わっただけですが、これに当てはまる整数x,yは存在しません。

10x+12yとして作れる数はすべて偶数なので、161は作れないんですね。

xとyは負の数でもいいことに注意してください。それでも161は作れません。

このように、解けない問題もあるんです。

なのでこの記事では、解ける問題に限って話を進めることにします。

解き方


10x + 13y  = 161

ここで一つお聞きしたいのですが

この問題、実はもう解けたという方、案外いらっしゃるのでは…?

こんなふうに考えると良さそうです。

      • 考えここから

10xの1の位は0。

161の1の位は1なので、13yの1の位を1にするしかない。

y=7とすると、13×7 = 91で1の位を1にできる。

この時点で式は

10x + 91 = 161

なので、x=7となる。

だから、答えの一つはx=7, y=7

(ああなんだ、10+13=23を7倍すればよかったのか)

      • 考えここまで

ということで、xとyの係数のどちらかが10だと、1のくらいに注目すれば解けそうです。


あまりに注目する

でも、係数に10がいてくれなかったら、今の方法は使えませんね。


12x + 17y  = 18

これだったらどうでしょう?

xやyは負の数でもいいことに気をつけてください。

1の位に注目してもあまり意味がなさそうです。

実は、先程やった「1の位に注目する」というのは

「10で割ったあまりに注目する」というのと同じことです。

例えば163÷10のあまりは3で、1の位の「3」が取り出せますよね。

今回も同様に「あまり」に注目してみます。

12と17のうち小さい方「12」で割ったあまりに注目します。

18を12で割ったあまりは6です。

「12x」を12で割ったあまりは必ず0なので、このあまり6は「17y」の方で作るしかないです!

ここで、17についても12で割ったあまりを考えます。

17÷12 = 1 あまり 5

なので、17 = 12×1 + 5 と書けて、

17y = 12y + 5y となります。

このうち「12y」の部分は12で割ったあまりに影響を与えませんので、

この5yで「12で割ったあまりが6になる数」を作ればいいわけです!

yに自然数を1から順に代入しながら12で割ったあまりを確認していくと…

5×1 = 5 → 5

5×2 = 10 → 10

5×3 = 15 → 3

5×4 = 20 → 8

5×5 = 25 → 1

5 × 6 = 30 → 6 見つかった!

ということで、y=6とした時に、17yを12で割ったあまりが6になります。これでy=6を確定させて良いとわかります。


この時点でもとの式はこうなってます


12x + 17 \times 6  = 18

あとはxを求めましょう。

17×6と18は12で割ったあまり同じなので、その差は12の倍数になっています。

なのでxは整数になるはずです!


18 - 17×6 = 18 - 102 = -84 = -(12×7)

ということでx=7とわかり、求める答えの一つは


x = -7, y = 6

と見つかります!

アプリ作りました

と、いうことで、こんな感じの問題をガンガン解けるアプリを作りました。

スクリーンショット

「ベズー計算トレーニング」です!

この形の整数不定方程式を「ベズーの等式」と言いまして、そこから名前を取っています。

Android:
play.google.com


iOS:

Bézout's Calculation Training

Bézout's Calculation Training

  • Ryuta Okada
  • Education
  • Free
apps.apple.com

6問解くまでのタイムアタックです!

慣れるまで結構難しいと思いますが、この記事で解説した考え方を使えばそこそこ速くなるはず!

実況プレイ

ちなみに私がやると、うまくいくとこんな感じで2分切れます

www.youtube.com


速い人がやった場合、既に1分を切ったという報告も受けています。すご…

合同式がわかる人向けの解説


12x + 17y  = 18

について、mod 12の合同式を考えると


0x + 5  y  \equiv 6 \\
5  y  \equiv 6

となります。

あとはyに自然数を順に入れていって、5yが6と合同になるyを探します。

yが見つかれば、xは自動的に決まります。

もっと詳しく知りたい方は…

こちらの記事をご紹介します。詳しいし、わかりやすいです。

mathtrain.jp

通分して足したら約分が発生する「分数の足し算」を量産する

はじめに

こちらのブログ記事に触発されまして、僕も考えてみることにしました。

今の僕の生活スタイルにおいては、小学生の方に分数の足し算を教える機会がままありますので、気になったのです。

分数の足し算で「約分」が発生する条件 - tsujimotterのノートブック

分数の足し算で「約分」が発生する条件(2) - tsujimotterのノートブック

目標設定

この記事の目標は

「足し算した結果、約分が発生するような分数の足し算問題を量産する」

ということにします。

例えばこういうものですね。

\displaystyle{ \frac{1}{10} + \frac{7}{6} = \frac{3}{30} + \frac{35}{30} = \frac{38}{30} = \frac{19}{15}}

2つの既約分数を、分母を最小公倍数に揃えることで通分し、分子を足した結果、最後に約分が発生するようなものです。

必要条件を調べていく

まず、求める「問題」を

 \displaystyle{\frac{a}{b} + \frac{c}{d} }

とします。 a,b,c,dは全て正の整数で、abは互いに素、cdは互いに素とします。

以下、abが互いに素であることを a \perp bと表すことにします。

bdの最大公約数をgとして、

b = gB

 d = gD

とします。

必然的に B \perp D, \, \, a \perp B, \, \, c \perp D, \, \,  a \perp g, \,\,c \perp gです。

bdの最小公倍数はgBDとなります。

すると、先ほどの問題を通分して足し算した結果は次のようになります。


 \displaystyle{\frac{a}{b} + \frac{c}{d}   = \frac{a}{gB} + \frac{c}{gD} = \frac{aD+Bc}{gBD} }


ここで、  \displaystyle {\frac{aD+Bc}{gBD} }素数 pで約分できると仮定します。

まず、分母gBDについて、

もし Bがpで割り切れるなら、約分できるためには aDがpで割り切れなければなりませんが、 B \perp D, \, \, a \perp Bと矛盾します。よってBpで割り切れない。

Dについても同様にpで割り切れない。

よってgpの倍数です。

 a \perp bつまり a \perp gBより、apで割り切れない。

同様にcpで割り切れない。



次に、分子 aD+Bcについて、

約分できるということはこれがpの倍数なので、

 aD+Bc \equiv 0 \pmod{p}

手順

ということで、以上の議論から、次のようにすれば、条件を満たす問題が量産できそうです。



1.
素数pを決めて


2.
pの倍数でない a,D,B,c
 B \perp D, \, \, a \perp B, \, \, c \perp D
 aD+Bc \equiv 0 \pmod{p}を満たすように決めて


3.
pの倍数g a \perp g, \,\,c \perp gを満たすように決めて


4.
  \frac{a}{gB} + \frac{c}{gD} を出題する



はい。


ただ、難しそうなのが2.ですね。

pの倍数でない a,D,B,c
 B \perp D, \, \, a \perp B, \, \, c \perp Dを満たすように

ここまでなら大したことはないです。例えば、別々の素数を割り当てて4つ全部互いに素にすればいいです。実際の条件はもっと弱いですが。

 aD+Bc \equiv 0 \pmod{p}

これが問題ですね。

改良

ということで、ここからは、これを満たす a,D,B,cの決め方を見ていきます。



以下、合同式はすべて \pmod{p}とします。


 aD+Bc \equiv 0を変形して

 aD \equiv -Bc



 D \perp pなので、DD^{-1} \equiv 1を満たす D^{-1}が存在します。

それを両辺にかけて


 a \equiv -D^{-1}Bc


 D^{-1}の計算は、「拡張ユークリッド互除法」を使って計算することができます。できるようです。

モジュラ逆数 - Wikipedia


ということで、 D,B,cを決めれば、apで割った余りが決まります。



あとはそれに、 a \perp Bを満たすまでapずつ増やしていけば、欲しい組み合わせが見つかります。

手順(改)


ということで、改めて手順をまとめるとこうです。



1.
素数pを決めて


2_1.
pの倍数でない D,B,c
 B \perp D, \, \, c \perp Dを満たすように決めて


2_2.
 a \equiv -D^{-1}Bc \pmod{p} a \perp Bを満たすaを決めて


3.
pの倍数g a \perp g, \,\,c \perp gを満たすように決めて


4.
  \frac{a}{gB} + \frac{c}{gD} を出題する


ということになります。

感想考察など


単にいくつかの素数を選んだら一つの「問題」がポンと出るようにできるともっと嬉しいですが、できるのか…?


なお、この手順で「約分が発生する分数の足し算」が全て生成可能かどうか(十分条件かどうか)はちゃんと検証しておりません。

全て生成可能な気はしています。多分必要十分条件になっているはず…。

必要条件ではあるはずだ(条件に当てはまらないものは生成されない)。




また、これが必要十分条件になっているとして、先程の

分数の足し算で「約分」が発生する条件(2) - tsujimotterのノートブック

に書かれている必要十分条件とどんな関係にあるのかは、僕のp進数についての理解が浅いためよくわかりませんでした。

僕の用いたa,c,B,Dあたりと、リンク先の記事にあるk,lあたりになにか関係がありそう。


ソースコードに落とし込んで実際に量産してみる


せっかくなので、今回の手法を使って「通分して足したら約分が発生する分数の足し算」を量産してみました。

https://dartpad.dev/bf5a7225bf5995e69cfe500a1af6968b


僕が最近普段使っているDartという聞き慣れない言語を使ってしまいましたが、何をやっているかは見て取れると思います。

コメントもつけていますし、変数名はこの記事と揃えてあります。

リンク先は実行環境とセットなので、コードを書き換えて色々実験することも可能です。

ただし、記事内の手法で生成可能な全てのパターンは網羅していませんのでご注意ください。

B,D,c素数しか入れてないし、aは最初に見つかった奴しか使ってないし、g=pに限定してます。

ロリポップレンタルサーバーでDjango??

もはやテーマがとっちらかっていて何を書いたらいいんだかわからなくなっているこのブログですが

まあ、いいや。

なんか混乱したのでその内容と、その解決の過程を備忘録として書き留めておこうと思います。

経緯

Webアプリを作ろうと思って、PythonのWebフレームワークである所のDjangoチュートリアルをやったはいいものの、

契約してるレンタルサーバー「ロリポップ」(スタンダードプラン)でDjangoが動かせるのかという問題にぶつかったので、

そもそも動くのか、俺は一体何をわかっていないのか、その辺の解決を試みます。

Djangoについては、ローカルでチュートリアルを一通りやりました。

Djangoのバージョンは1.11。「いってんいちいち」ではなく「いってんじゅういち」と読むほうが誤解がないです。1.9よりも新しい。

結論

読者の時間が無駄にならないように結論を先取りして書いておきますと

結局いろいろ調べたり試行錯誤した結果、レンタルサーバーでDjangoを動かすのはやめてVPSを契約することにしました。

レンタルサーバーでもCGI経由で動かすことはできるみたいだけど、そこまでするメリットがよくわからなかった。




ここから先は、僕の思考の時系列順に書いてます。


僕の経験値

5年前の2012年、PHPのWebフレームワークである所のCakePHPを使ってWebアプリを作ったことがあります。

解決したい疑問

CakePHPは普通に動かせたのにDjangoで困ってるのは何が違うからなの
CGIって何
ロリポップに「Pythonが使える」と書いてあるけど、どういう意味で「使える」の
・結局ロリポップDjangoは動くの



じゃあ一個ずつやっていきましょう

CakePHPは普通に動かせたのにDjangoで困ってるのは何が違うからなの

ロリポップPHP動かすのってめちゃくちゃ簡単なんですよ。

例えば、ロリポップFTPとかを使ってサーバー上に次のような hoge.php というファイルを上げる。

<?php
echo "Hellooooo Wooorrrrld";

で、上げたファイルのアドレスをそのままブラウザに打ち込んでアクセスすると、このPHPの実行結果が出力されます。

ファイルのパーミッションは644。全員Readができて、Writeは所有者だけ。eXecuteは誰も出来ない設定。

でも実行されてます。なんでだ。実行権限は誰にもないんじゃないのか。


まあとにかく。

PHPはファイルを上げるだけで実行できるんですよ。


対して、Pythonはどうか。


hoge.pyをアップします。

print("Goodafternoon world")

そしてこのファイルのアドレスをブラウザに打ち込んで直接アクセスすると…

500 Internal Server Error
※CGI もしくは SSI が正しく動作していません。


怒られました。

軽くググッた感じ、SSIの方は今日の記事とはあんまり関係なさそう。

CGIについてはあとで話題にしましょう。

ロリポップPHPについて

で、また調べを進めた所

僕のアカウントでのPHPの設定は「バージョン 7.1(モジュール版)」でした。

このモジュール版という所が多分、今日重要になってきそう。多分。


そこで、これを「バージョン 7.1(CGI版)」に変更してみました。



そして、先ほどのhoge.phpにアクセスして見た所…


…問題なく実行されますね。


(phpinfoを使って、Server APIの項目が Apache 2.0 Handler から CGI/FastCGI に変わったことを確認しました)


いや、その、仮説としてね


PHPはモジュール版だから実行できたのであって、pythonCGIを通して(?)実行する必要があって、だからPHPCGI版に変えたらさっきみたいに簡単に実行できなくなるんじゃないかって


思ったんですけどね。どうもそうじゃない。



CGIって何


ということで、やたらめったら出現する「CGI」というキーワードを調べてみます。

イメージ、なんかこう、15年くらい前にアクセスカウンターとか掲示板とかそういう周辺で見た言葉、っていうイメージ。


CGIとは、Common Gateway Interface の略。Wikipediaによると

ウェブサーバ上でユーザプログラムを動作させるための仕組み。

だそうです。

「…はぁ。え、CGIはそういうものの一種ってこと?それともそういうもの全般をCGIと総称するの???」などと思いましたが

前者でよさそうです。CGIはそういうものの一種。

ロリポップでは、.cgiファイルをアップロードしてブラウザでアクセスすれば実行されるっぽい。


んでまあ軽くググッた感じ、
Perlで書くことが多い
・拡張子は.cgi
・一行目には、使用したプログラミング言語へのパスを書く

最後の奴がわかりにくいですが、ロリポップのマニュアルにちゃんとパスが書いてありました。


ということで、とりあえず何もしないプログラム fuga.cgi を書いて、実行してみよう。

#!/usr/bin/perl

(パーミッションは700、ロリポップ推奨)

500 Internal Server Error
※CGI もしくは SSI が正しく動作していません。

なんでだよ!!


ということでいろいろ試行錯誤したり調べたりしながら、ようやく「動作するコード」に辿り着きました。

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "fugafugafugafugaaaa";

これで、最終的にブラウザに「fugafugafugafugaaaa」が返ってきました。この2行目がないとサーバーエラーになる。

CGIの動き

つまりこういうことらしい。

基本的には.cgiファイルに好きな言語のコードを書くんですが、そのプログラミング言語さんに渡す前後にCGIさんを経由するので

CGIさん用の指示が必要になる。

全体の流れとしては、まず往路

.cgiファイル → CGI → プログラミング言語

この過程では、CGIさんは.cgiファイルの一行目に書いてある宛先(プログラミング言語のパス)を確認し、二行目以降を渡す。

今回の場合はPerlさんがそれを受け取って、実行。出力は次のようになる。

Content-type: text/plain

fugafugafugafugaaaa

次は復路

プログラミング言語 → CGI → ブラウザ

ここでCGIが一行目を見て「あ、これはただのテキストなのね。音声とか画像ではないのね。」と確認し、適切な形でブラウザに返す。

さっきエラーになった時は、この「これはテキストですよ」という一行目がなかったんですね。これを「ヘッダ」というらしいです。


なるほど。

よし!

ここまでわかればpythonも動かせるはずだ!

#!/usr/local/bin/python3.4

print("Content-type: text/plain\n")

for i in range(10):
	print(i)


これはちゃんと動いた!!!!(パーミッションで実行権限を付け忘れてエラー出て小一時間悩んだけど。)

ロリポップに「Pythonが使える」と書いてあるけど、どういう意味で「使える」の


とりあえず、CGI経由で動かせることはわかりましたね。


てもこれで、どうやってDjangoをインストールしたり動かしたりするのかはまだまだわかりません。


ここでSSHという機能を有効にしていろいろ試してみましょう。


SSHは、Secure Shell の略で、めちゃくちゃ簡単に言えば、コマンドプロンプトやターミナルからサーバーにアクセスする方法のことです。


コマンド入力でいろんなことができます。


ロリポップの管理画面からSSH設定を有効にして、

ssh -l ユーザー名 -p ポート番号 ホスト名

で接続成功。


"vim" やら "python" やら普通に使えるので、.pyファイルを作ってコマンドから実行とか簡単にできました。

なるほど、こういう意味でも、サーバー上でpythonを「使える」わけだ。



さて、こちらの参考文献によると

noppiki.hateblo.jp

curl や pip が無くて困ってる様子なんですが

今確認した所によると、既に入ってるようです。

pipが使えれば、python関係の好きなモジュールがインストールできるはずで、Djangoのインストールも瞬殺では??


ということでやってみよう。

python -m pip install Django

…。


だめ。Permission Error.


そうか〜〜〜



chmodも試したけど、弾かれました。まあそりゃそうだ。これで変えれたら意味がない。sudo は command not found. なるほど。



どうも調べると、こういう時は、--user というオプションを使えばいいっぽい?

やってみましょう。

python -m pip install Django --user


……うまくいきました!!


案外、SSHでこの調子でやっていけば、ロリポップDjangoちゃんと動くのでは?

結局ロリポップDjangoは動くの

では、ここからはこのマニュアルにそってやっていきましょう。

Django をデプロイする | Django documentation | Django


WSGI という仕組みを使って、サーバー上でDjangoを動かすことになりそうです。


CGI ではなく WSGI を使う」という理解でよさそう。多分。


ロリポップサーバーはApacheというソフトで動いているので、Apache上でWSGIを使うには mod_wsgi というモジュールを使うことになりそう。


新出単語が多くてアレですが、まあ、そういうことみたいです。


……



さて。そうして2時間くらい経ちましたけれども


ロリポップApacheに mod_wsgi をインストールして有効化する方法が全然わかりませんね。


Apacheまわりの設定が全部書いてある httpd.conf というファイルをいじる必要がありそうなんですが


ロリポップだろうとさくらレンタルサーバーだろうと、httpd.conf はいじるどころか中身見ることもできないみたいです。


あれ?じゃあデプロイできなくね????どうすんの?????無理なの???



……


どうも、下記のページたちによると

さくらのレンタルサーバでpyenvとDjangoを動かす « chibiegg日誌
さくらサーバのスタンダードでPython3.5 + Django1.9を動かす | しましまくろっく
qiita.com


結局、CGI経由で入れるしかないみたいです。WSGIではなく。


CGI経由だと、アクセス(リクエスト)がある度にpythonを起動して処理して、ってやるから反応が遅くなるみたいですね。

(WSGIのデーモンモードならpythonを起動しっぱなしにできる)


まあ、安いレンタルサーバーですから、それは仕方ないのでしょう。



ということで、長いことかかりましたが、

CGI経由でDjangoを動かす


やっていきましょう。



Djangoのプロジェクトの中から、「最初にこれを起動しさえすればいい」みたいな.pyファイルを見つけて、そいつをcgi経由で実行すれば済む話

…なら、簡単にいく気がするんだけど、そもそもDjangoってリクエストを受けた後どういう仕組みで動くんでしょうね。


URLディスパッチャがURLに合わせたビューを呼ぶ、ってのはわかってるんだけど


今話題にしてるのは、もっと前段階の話だよね。


もうちょっと悪あがき

いや、待って待って

Djangoってのは、WSGIを使って実装するように設計されているわけで、


CGIを経由してDjangoを動かすというのは

まあ言ってみれば邪道なわけですよ。

CGIで動かすと、パフォーマンスも下がるらしいし。

なんとかCGIを使わずに普通にWSGIで動かす方法はないものか。


ということで、httpd.conf の代わりに .htaccess をいじることでなんとかならないか調べてみました。

.htaccesshttpd.conf よりも下位にある設定ファイルで、.htaccess なら、レンタルサーバーでもいじることができる!


…ということで調べてみたんですが



.htaccess に書ける範囲の内容では、mod_wsgi を有効化することはできないみたいですね。


httpd.conf に LoadModule という行を書いてやる必要がある。



はい。ということで。ダメです。CGIを経由するしかなさそう。


レンタルサーバーや〜めた!VPSにしよう!!


はい。


突然ですが、完全に僕の知識不足であれだったんですが

いろいろ調べているうちに、そもそもレンタルサーバーではなく、VPSというサービスを使うと、httpd.conf をいじれることがわかりました。


VPSというのは、Virtual Private Server の略で、レンタルサーバーよりも自分で触れる範囲が広い(自分で触らなければならない、とも言える)


もらえる権限が大きい代わりに責任も伴うわけですね。


そもそもApacheのインストールから自分でやるみたいです。



そうか。


おとなしくこれ使えば、邪道な方法を取らずともDjangoアプリを作れるわけか。


しかも値段も安いとこを使えばレンタルサーバーと大して変わらないみたい。



ということで。


レンタルサーバーでDjangoを動かすのはやめて、VPSを契約することにしました。



追記(2018-04-25)

ちなみに、こうしてVPSを契約してDjangoを動かして作ったサービスがこちらです!

岡竜之介の大喜利道場

よかったら遊びに来て下さい!!


それから、この記事を書いた時には知らなかったのですが

Firebase や Heroku といったサービス上でDjangoを動かす手がありますね。

サーバーの管理をそこそこ自分でやらなきゃいけないVPSと違って、手軽でいいかもしれません。

一方で、その分カスタマイズ性が低く、かゆいところに手が届かないといったことは起こるかもしれませんね。

参考までに!

以上!!

どうして西野カナ「トリセツ」をカラオケで歌うのは難しいのか

こんにちは。岡竜之介です。


糞ミーハーの皆様におかれましては、毎日のように一人カラオケ西野カナ「トリセツ」を入れては歌っていることと存じます。


一言で言うと女性が彼氏に「こうして欲しい」ってのを、取扱説明書風のフォーマットにしていろいろ言ってる歌です。


でももう正直話題としての旬は去りまして、


「面倒くさい女の歌」だの言う言説も聞き飽きましたし


「いや、これくらい男も頑張ろう」と男が言っても


「いや今更トリセツかよ」とそもそも論でぶちのめす今日このごろでございます。



はい。



まあ、もうちょっとしたら、逆に、古いだの新しいだの言う範疇から外れて、単なる有名曲の一つとして数えられるようになるでしょう。



今「レミオロメンの粉雪のサビの歌い方」という記事を書いて「今更?」という人はいませんね。



いますね。



ということで、今日は「トリセツ」です。


歌詞の内容については一切触れません。


「カラオケでトリセツ歌いたいけど、周りの人からどう思われるかが不安で入れるのが難しい」とかいう話ではありません。


あくまでメロディーに関する技術的な話です。




YouTube埋め込んでおくので「どんな歌だっけ?」ってなってる人は一回聞いてください。


1番で十分です。



西野カナ 『トリセツ』MV(Short Ver.)

Aメロが難しい

はい。

これ、聞いてる分には何が難しいのか全然ピンとこないと思います。


ところが。


いざカラオケで歌おうと思って入れてみるとですね、


なんかAメロがうまく歌えないんですよ。


リズムがとれないのか音程がとれないのか、とにかく、なんかうまくハマらないんです。


「あれ?」ってなるんですよ。



普通、何度か聞いて覚えた歌って、カラオケで歌えるじゃないですか。上手い下手は別にしてね。


画面に歌詞出るし。メロディーは知ってるし。


でも何故かこの歌はうまく歌えなくて、「あれ?」ってなるんです。




体験してみたい人は、この記事を最後まで読む前に、一回カラオケで入れてみてください。


練習してから行かないでくださいね。「曲は知ってるけど、一回も歌ったことはない」くらいの状態で行くのが望ましいです。



なんで「あれ?」ってなっちゃうんでしょうね?


答えを言ってしまうと


「単調な部分が長い」せいで「前にはみ出す部分」の「自由度が大きすぎる」からです。


一つずつ説明しますね。

単調な部分が長い


短調」じゃないですよ。「単調」です。

このたびはこんなわたしをえらんでくれてどうもありがとう

ごしようのまえにこのとりあつかいせつめいしょをよくよんで

いってんものにつきへんぴんこうかんはうけつけませんごりょうしょうください


はい。この色で示したところが、「単調な部分」です。長いですね〜〜〜〜〜



この「単調な部分」では、「音の高さ」と「リズム」がずっと一定です。


同じ高さの音を、同じタイミングで、発し続けるわけです。単調でしょ?



そして。


同じ高さの音を同じタイミングで発し続けるということはですね


仮に一文字分先走ったり遅れたりしても、元と同じように歌えてしまうということです。


ズレの数が二文字や三文字でも、単調な部分が続く限りは、元と同じように歌えます。



前にはみ出す部分がある


これが一番説明しづらいんですけど


例えば、「いち、に、さん、し」みたいにカウントでリズムをとったとして


「いち」よりも前に来る部分が、「前にはみ出す部分」です。


読者の中にはこれだけで伝わってる方もいるでしょうが、大半の方は「?」だと思うので、例をあげますね。


星野源「SUN」

星野源の「SUN」のサビには、「前にはみ出す部分」があります。


「いち、に、さん、し」とカウントをとりながらサビの最初を聞いてみるとですね

きみこえを きかせて

の「きみ」は、「いち」より前にあることがわかります。


」の所で、「いち」と重なるんです。


「いち、に、さん、きみ…」と始まるわけです。



星野源「恋」


これに対し、星野源の「恋」のサビは、「前にはみ出す部分」はありません。

ねのなかにあるもの

の最初の「」で、「いち」と重なります。


「いち、に、さん、し、ねのなかーに…」

と始まるわけですね。


back number 「高嶺の花子さん」

back number の「高嶺の花子さん」のサビも、「前にはみ出す部分」があります。

あいたんだ いますぐ その かどから

の「あいた」が、カウント「いち」より前にありますね。

その次の「」でカウント「いち」に重なります。


「いち、に、さあいたんだ…」


と始まります。前にはみ出してる量が多いので、「さん」の「ん」を言えないほどに、早めに歌い始めることになります。


back number 「青い春」


ちなみに back number「青い春」のサビは

おどりながら はばたくためのステージで

の「おどりな」が前にはみ出してます。長いですね。


「いち、に、おどりながら…」


と始まるわけですね。


「さん、し」のカウントがまるまる「おど、りな」で置き換えられてます。


ちなみにこの曲のカウント1は、「おどりな」を延ばした「あ」のタイミングにあります。やらしいですね。


和田光司「butterfly」

んだいな ゆめのあとの

「む」だけ前にはみ出してます。「げ」でカウント「いち」と重なりますね。


「いち、に、さん、しーんだーいなー」


という感じ。「いち、にい、さん、しい」の「しい」の「い」の分だけ、前にはみ出した「む」で置き換わってます。






とまあこんな風にですね、「前にはみ出す部分」というのは、結構融通が効きます



歌詞が長い場合は、多めに前にはみ出させて、早めに歌い始めればいいわけです。



西野カナ「トリセツ」


では「トリセツ」のAメロはどうでしょうか?


もうお気づきかと思いますが、色分けを「前にはみ出してる部分」カウント『いち』の部分」という色分けをしてます。


「単調な部分」も足すと、こんな感じになります。

このたはこんなわたしをえらんでくれてどうもありがとう

ごしよのまえにこのとりあつかいせつめいしょをよくよんで

いってんのにつきへんぴんこうかんはうけつけませんごりょうしょうください

ちなみにこの歌では、カウント1の部分単調な部分の一部です。


結構、前にはみ出してますね。3文字〜4文字というのは、結構はみ出してる方です。



つまりこの歌は、前にはみ出す部分の直後に長い単調な部分が来るという構造をしているわけです!




この歌のAメロはこの構造のラッシュです。この3フレーズだけではありません。


1番でもまだまだ出てくるし、2番に入ってもまだまだ続きます。



そして、


前にはみ出す部分が持つ「文字数の融通が効く」という性質と


長い単調な部分が持つ「一文字分先走ったり遅れたりしても、元と同じように歌えてしまう」という性質が


組み合わさった時


凶悪な「歌いにくさ」が生まれるんですよ!


前にはみ出す部分の自由度が大きすぎる


例えばここ。

このたはこんなわたしをえらんでくれてどうもありがとう

このた」が前にはみ出す部分です。「」でカウント1がくる。



ところがこれ。



次のように歌っても、それっぽく歌い始めることができてしまうんですよ。

このびはこんなわたしをえらん…

この」だけを前にはみ出させて、「」にカウント1が来てます。



前にはみ出す部分はこのくらいズラしても全然平気です。融通が効くので。


そして、その後の「単調な部分」のせいで、ズレていることに気づかないんです!





普通は、前にはみ出している部分が終わってメロディー本体に入ったら、すぐメロディーがおかしいことに気付くわけですよ。



さらに言えば、「直後のメロディーを自然に歌うために、どのくらい前にはみ出させればいいか」は、頭の中で自然にわかります。



別にわざわざ計算しなくても、自然にわかるんですよ。



でも「トリセツ」はそうならない。



「単調な部分」が長いせいで、前にはみ出させる文字数が間違ってても、自然に歌えてしまう。




これが「トリセツ」の歌いにくさの正体です。



「序盤の音程をとるのが難しい」と言っている人がいますが、実はその正体は



「歌詞とメロディーを正しい位置関係に当てはめる」のが難しいんです。



試しに歌詞を全部「ラララ」とか「トゥルル」とかで歌ってみてください。



たちまちこの「あれ?」という感覚は消えます。「ラララ」は文字数を後からいくらでも調整できるからです。







前にはみ出させる文字数を間違えると、一体何が起こるでしょう?

このびはこんなわたしをえらんでくれ…


そうです。「あれ?」ってなるんです。



「どうもありがとう」が近づいてきたあたりで、「あれ?おかしい。」と気付くんです。



本来「このた」の3文字を前にはみ出させなきゃいけないのに、「この」しか前にはみ出させていないから、文字が多すぎて、メロディーに入らないんですね。



その事が、「どうもありがとう」が近づいてきてようやく発覚するわけです。



ちなみに逆のパターンもあり得ます。

このたびはんなわたしをえらん…


前にはみ出させすぎです。


「どうもありがとう」が近づくにつれてメロディーが余り、やはり「あれ?」ってなります。






他の部分も見てみましょう。

ごしよのまえにこのとりあつかいせつめいしょをよくよんで


カウント1が「ごしよ」を延ばした「う」のタイミングにあります。やらしいですね。


これの間違いパターンは次のようなものが考えられます。

ようのまえにこのとりあつか…

出遅れたパターンです。もっと早めに歌い始めて、前にはみ出させないと、文字が多すぎて爆死します。

ごしようまえにこのとりあつか…

出が早すぎます。「ごしよう」を一単語としてまとめてしまうと、こうなります。「ごしよ」だけを前にはみ出させ、「う」でメロディー本体に突入しましょう。音としては「う」というか完全に「お」ですけどね。


ごしようのえにこのとりあつ…

さらに出が早すぎます。



ちなみにこの部分は「とりあつかい」の最後の「い」がグンッと上がるので、そこも注意してくださいね。





いや〜難しいですね!!


ここまでで次のように思った方もいるかもしれません。



「要するに3文字はみ出させればいいんでしょ?」


これがこうは行かないんですね。


次を見てみましょう。


いってんのにつきへんぴんこうかんはうけつけませんごりょうしょうください


4文字ですね。4文字の所もあるんですよ。


ちなみにこれの間違いパターンはこちらです。

いっんものにつきへんぴんこうかんはうけつけませんごりょうしょうください

出遅れパターンですね。



じゃあどうやったらうまいこと歌えるの?


一つ考えられる方法はこれです。




「歌詞を見て、メロディーと歌詞が最後までうまく合致するように、何文字を前にはみ出させればいいか毎回計算する。」



まあ、無理、ですね。これは。



となると結局。




どれだけ前にはみ出すかを丸暗記するしかありません。



前にはみ出す部分が全部同じ文字数、とかならいいんですけど、実際はバラバラなんですよね。



だから覚えるしかありません。



これを丸暗記していない人がカラオケでトリセツを入れて、うまく歌詞とメロディーを合わせられずに「あれ?」ってなっちゃうんです。



それが嫌なら何回も聞いて覚えろ!ということです



これを丸暗記するためには、歌詞のどの文字が「カウント1」にあたるのかを覚えていくと良いでしょう。



その文字より前の部分は、前にはみ出しているわけです。



具体的にはこんな感じです。

このたはこんなわたしをえらんでくれ…

ごしよのまえにこのとりあつか…

いってんのにつきへんぴん…

きゅうにきげんになる…

こたえなくせにほっとくと…

ていききにほめると…

ちいさなんかにもきづいて…


多いですね〜〜〜〜〜




中でもこいつなんか特に難しいですよ。

きゅうにきげんになる…


「ふ」は前にはみ出させたくなる。カウント1のアクセントの位置に置きにくいですからね。「ふ」。



そんでこれが2番もありますからね。やばいですね。でも覚えてください。全員です。全員覚えてください。



ちなみに一番多く前にはみ出しているのは2番の頭の「いがいとい」です。5文字。


簡単に覚えるには?

前にはみ出す文字数(というより音数)は3か4か5と決まっているので、これらに分類して覚えても良いかもしれませんね。

3音はみ出し

このたはこんな
ごしよのまえに
きゅうにきげんに
ていききにほめると

4音はみ出し

いってんのにつき
こたえなくせに
ちいさなんかにも
ちょっとしプレゼント

5音はみ出し

いがいといりん

他にも

・「ただしくやさしく」の所が、その後の同じ部分とメロディが違うので間違えやすい
・Bメロで急に歌詞がゆっくりになるからタイミングを合わせにくい
・サビの「こんなわたしだけど」の「た」が予想外に上がる
・サビの「大切にしてね」の裏声



など、難しい部分がちょくちょく出てきます。



が、頑張って歌いましょう。



それでは、これからもどうぞよろしくね。

のぺーっと分布した超関数

ディラックデルタ関数

ディラックデルタ関数ってあるじゃないですか。

はい。まあもちろん知らない人が大半です。なのでちょこっと説明します。


デルタ関数の定義

定義はこちら。


{\displaystyle
\int_{-\infty}^{\infty} f(x) \delta (x) dx = f(0)
}


これを満たす {\delta (x)}デルタ関数といいます。


ちなみに関数ではありません(!)。


関数に似てるけど、関数としては性質がふざけてるので、「超関数」という分類になってます。

これに {f(x) = 1} を代入すると


{\displaystyle \int _{-\infty}^{\infty} \delta (x)dx = 1}


がわかります。マイナス無限大から無限大まで積分すると1になるなんて、確率分布(確率密度関数)みたいですね。


確率密度関数列の極限としてのデルタ関数

実はデルタ関数は他の確率密度関数から類推してやると理解しやすいです。

2つ紹介します。

正規分布の分散→0にしたもの

{\displaystyle
a_n (x) = \frac{1}{\sqrt{2 \pi  \left(\frac{1}{n}\right)^2  } } \exp \left( - \frac{x^2}{2  \left(\frac{1}{n}\right)^2  } \right)
}

分散が {\left(\frac{1}{n}\right)^2} となってます。

こいつの {n} を大きくしていくと…

f:id:agajo:20170317201037g:plain


あ、1つめの関数がどの位置にあるかとか、nが大きくなる時の変化の幅とかは適当です。

要するにどういう動きをするのかってことだけわかれば良いので。以下同様。

一様分布の幅を→0にしたもの

{\displaystyle
\begin{eqnarray}
b_n(x) = \left\{ \begin{array}{ll} 
  n/2 & (-1/n \leqq x \leqq 1/n) \\
  0 & (otherwise) 
\end{array}\right.
\end{eqnarray}
}

一様分布の範囲の幅が {2/n} になってます。

この {n} を大きくしていくと…

f:id:agajo:20170317202755g:plain


という感じ。

どちらの場合も、面積=1 をキープしたまま、y軸にピッタリと張り付いていく様子がわかりますね。


関数列の収束について

{a_n(x)}{b_n(x)}{f(x)=0} に各点収束します。でも一様収束はしません。

各点収束とか一様収束については解説すると長くなるのでここでは割愛するので、知らない人は流し読みしてください。


ちなみに、一様収束する場合は、積分範囲が有限の場合、積分してから極限とるのと極限とってから積分するのとで、結果が同じになるらしいです。


今回は、先に積分すると1だし(nに関わらず面積1だから)、先に極限とると0になる(f(x)=0になるから)ということで、積分してから極限とるか極限とってから積分するかで値が違いますね。


一様収束してないし、積分範囲が有限でもないですからね。

確率密度関数としてのデルタ関数


例えばですね、これを「x軸上で、ある粒子がどの位置にあるか、という確率を表す」と解釈することが出来るわけですよ。


そしてデルタ関数の場合、「100%絶対に {x=0} の地点にある」と断言できるわけです。


普通、x軸という連続な範囲において、ある厳密な一点に粒子がある確率は0%です。ほんのちょっとでもズレてたらアウトなので、そういうことになるんです。


{0 \leqq x \leqq 1} の範囲にある確率」みたいに範囲で考えて初めて、意味のある確率が出てくるわけです。


なのに、デルタ関数の場合は、厳密に {x=0} の地点にあると断言できるので、気持ち悪いわけですね。


このあたりからも、デルタ関数が普通の関数ではなくて超関数であることがわかります。

積分布関数


積分布関数というのは、確率密度関数をマイナス∞からxまで積分してきた値を示したものです。


「あるx以下の範囲に粒子がある確率」を表します。なので、xが {-\infty \to \infty} と変化するとき、累積分布関数は 0→1 と変化します。


ちなみにデルタ関数確率密度関数と考えた時の累積分布関数はこうなります。


f:id:agajo:20170317203059p:plain


{x=0} でピョンと飛び上がります。{x \lt 0}の時はその範囲に粒子はないし、{0 \lt x} の時は100%その範囲に粒子があるわけです。


厳密に {x=0} の上でどうなってるかは知りません。多分どうでもいいです。

のぺーっとした超関数を考えよう!

ここまでデルタ関数を紹介してきました。

これに対して、のぺーっとした超関数はないのか、というのが今回の疑問。やっと本題ですよ!!

やっとって言っても、texで式書いたりgif動画作るのに時間がかかったのは僕の話であって、読んでると一瞬かもしれないですけどね!!

はい。

「のぺーっとした関数」でググっても、ツイッターで聞いてみても、全然それっぽい話がヒットしなかったので、調べるのは諦めて自分で考えることにしたのが事の発端です。

まず名前を付けよう!

デルタ関数にならって、イプシロン関数と呼びましょう。

{\displaystyle
\epsilon (x)
}

ってわけです。

イプシロン関数」で検索しても既存のものはなかったので、良いでしょう。

確率密度関数列の極限としてのイプシロン関数

まずはデルタ関数の時と同様に、確率密度関数の極限を使ってイメージを掴もう!

正規分布の分散→∞にしたもの

{\displaystyle
c_n (x) = \frac{1}{\sqrt{2 \pi  n^2  } } \exp \left( - \frac{x^2}{2  n^2  } \right)
}

分散が {n^2} となってます。

こいつの {n} を大きくしていくと…

f:id:agajo:20170317204548g:plain


こう。

一様分布の幅を→∞にしたもの

{\displaystyle
\begin{eqnarray}
d_n(x) = \left\{ \begin{array}{ll} 
  1/2n & (-n \leqq x \leqq n) \\
  0 & (otherwise) 
\end{array}\right.
\end{eqnarray}
}

一様分布の範囲の幅が {2n} になってます。

この {n} を大きくしていくと…


f:id:agajo:20170317204941g:plain


どちらも面積=1をキープしたまま、x軸にのぺーっと張り付いていく様子が見て取れます。


関数列の収束について

このイプシロン関数を考えている時に不安だったのが、

これ、完全に {f(x)=0} に一致してしまって、イプシロン関数なんてものを考えることはできないんじゃないか?

ということです。

0.999999.....が1と等しいみたいな。1と別個に0.99999.....という数字を考えることはできないわけです。


実際、この {c_n(x)} とか {d_n(x)} は、{f(x)=0} に一様収束します。

各点収束もするし、一様収束もするんです。

一様収束は、各点収束よりも割りとガッツリ収束していくので、極限とったら完全に同じものになるんじゃないか。

…と思ってたんですけど。

これ、nをどれだけ大きくしても積分はずっと1なんですよ。一方、{f(x)=0}積分したら0です。

これは、はっきり違いますね。全然一致してないです。

先に極限とって積分するのと、積分してから極限とるのとで、値が違うわけですね。

積分と極限の順序を入れ替えてもいいのは「一様収束」「積分範囲が有限」という2つの条件がありましたが、

今回は、一様収束はしても、積分範囲が無限だから、積分と極限は順序を入れ替えたら値が変わりうるわけですね。


なるほど。


ということで。

どういう関数(超関数)のことを考えているか、大体伝わったと思います。


こいつの性質を調べよう!!!

確率密度関数としてのイプシロン関数

デルタ関数
「x軸上で、ある粒子が100%絶対に {x=0} に存在する。」
という確率を表していました。

それに対して。

イプシロン関数は
「x軸上で、ある粒子が存在する確率が、x軸上のありとあらゆる点で同様に確からしい」

と解釈するのが自然でしょう!!!!

…いや、「!」マークまで付けて強調しましたが、それが自然だと感じているのが僕だけだったらごめんなさい。

積分布関数

イプシロン関数を確率密度関数と考えるなら、その累積分布関数を考えるのは自然な流れです。これは自然な流れです。

で、累積分布関数を考えてみるんですが…



これが、よくわからないんですよ!!



積分布関数である以上、マイナス∞の極限で0、プラス∞の極限で1になります。これはイプシロン関数の性質「積分すると1」と合致します。

そして、その (-∞,0) と (∞,1) の2点を「水平な直線」で結んだものが、累積分布関数になると思われます。


…うん。いや、飛躍してますかね。どうですかね。

イプシロン関数の値自体はずっと(ほぼ?)0なので、その積分である累積分布関数は傾き(ほぼ?)0の線なわけです。つまり(ほぼ?)直線です。

「(ほぼ?)」といってるのは、厳密に0なのかどうなのか僕がよくわかってないからです。


いやだって厳密に0だったら積分が1にならないじゃない!でも有限の値とってかつx軸全体で同様に確からしかったら、積分が発散しちゃうのでやっぱり厳密に0だよなあ…。




まあいい。


とにかく、水平な直線ということで納得しましょう。

積分布関数のグラフ


次の問題は、この累積分布関数のグラフを書こうとすると発生します。

x=0の時の累積分布関数の値がわからないので、水平な直線をどの辺に書いたらいいのかわからないんです!

f:id:agajo:20170317230026g:plain

「いや、普通に {y=1/2} じゃないの?」と思った方もいるかもしれません。

でも、それって正しくないと思うんですよ。

{x=0}{y=1/2} という考え方は、{x=0} が「真ん中」だからっていう感覚から来てると思うんですけど

「真ん中」って何? という話なわけです。

粒子の存在確率はx軸上全体で同様に確からしいわけだから、{x=0} を「真ん中」とかいう「特別」な扱いをする必然性はどこにもないわけです。

宇宙に中心はない、みたいな話ですね。

イプシロン関数を定義しよう

とまあ、感覚的な話が続いてしまいましが

数学の記事を書いてるのに感覚的な話に終始していてはいけません。

積分布関数がどこを通るかわからないのは、きっとイプシロン関数をちゃんと数式で定義していないからなのでしょう。

ということで、定義を試みます。



デルタ関数


{\displaystyle
\int_{-\infty}^{\infty} f(x) \delta (x) dx = f(0)
}


みたいに、他の関数と掛け算して積分した時にどうなればいいか、っていう観点で定義できそうかな?


{\displaystyle
\int_{-\infty}^{\infty} f(x) \epsilon (x) dx = ???
}


どうなればいいんでしょうね。


また感覚的でアレですが、この積分は「{f(x)} の平均値」を表していると考えられます。


それも普通の平均ではなく、(-∞,∞)という範囲における平均です。


(-∞,∞)という範囲において、イプシロン関数は「同様に確からしいという確率」を表すわけですから、それと{f(x)}を掛け算して積分したら、f(x)の平均値がでるんです。


「値×確率」を全部足すって奴です。説明が超雑ですが、ここで確率論の説明してると長くなるのでこの程度にします。



さて。



まず、{f(x)=1} の時は、この積分は1になってなきゃいけません。


{\displaystyle
\int_{-\infty}^{\infty}  \epsilon (x) dx = 1
}


というわけです。イプシロン関数に要求している性質です。まあそれはいい。


{f(x)}が定数の時は、その定数がそのまま積分値になりますね。まあそれもいい。



{f(x) = x } の場合はどうでしょう?


{\displaystyle
\int_{-\infty}^{\infty} x \epsilon (x) dx = ???
}


この積分は、x軸上で粒子が発見される位置の「期待値」を表します。「値×確率」を全部足すっていう奴です。


この積分はどうなるでしょうか?


{x=0} の左半分と右半分で相殺するから、積分結果は0…?



…。



はい、違いますね。

その考え方は、{x=0} を「真ん中」と捉えている場合の考え方です。


{x=3} を「真ん中」としてその左右が相殺すれば、積分値は3になるわけです。


結局、この積分が「わからない」んですよね。宇宙に中心はないわけです。



ということで、

{\displaystyle
\int_{-\infty}^{\infty} x \epsilon (x) dx = ???
}

の「???」の部分、ひいては



{\displaystyle
\int_{-\infty}^{\infty} f(x) \epsilon (x) dx = ???
}

の「???」の部分が埋められないので、これうまく定義できないですね。


いや、方法はあるのかもしれないけど、今の僕ではうまく扱えません。

そして、実際、うまく扱う方法がなくて何の役にも立たないから、この関数は検索してもヒットしなかったのかもしれません。

そんな気がします。






……





………



いや、まだだ!!!!!!!


デルタ関数だって、{x=0} を特別な点として扱っていたじゃないか!!

イプシロン関数でも、{x=0} を特別な点として扱ってみたらどうだ?


主観的に中心を決めてしまえば良いわけですよ。


だって、あなたがこの宇宙にある何かを感じる時、どうしたってそれはあなた一人が感じているわけで


他の人とまったく同じ感じ方をしていることはありえないわけで

相対性理論だって観測者によって時間の感じ方とか質量とかが変わるって言ってるわけで

まあ要するに




宇宙の中心はある!!




それはお前自身だ!!




いや、むしろ、この文を書いている俺からしたら、宇宙の中心はお前ですらない




宇宙の中心は、常にこの俺だ!!!






というわけでですね。


まったく飛躍のない極めて論理的な推論によって、{x=0} を特別扱いすることが根拠付けされました。

今度こそイプシロン関数を定義する


{\displaystyle
\int_{-\infty}^{\infty} f(x) \epsilon (x) dx = \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} f(x) dx
}


はい。いきなりでアレですが、これでしょうね。


右辺の積分範囲がポイントです。

プラス側とマイナス側に、{x=0} を「真ん中」として、同じ速度で積分範囲が大きくなるようになっています。


そして、その積分範囲の幅で積分値を割ることで、{f(x)}{(-t,t)} の範囲での平均値を出します。


最後に、その {t}{\infty} にふっ飛ばすわけです。

積分が1か確認する

{f(x)=1} を代入します。

{\displaystyle
\begin{align}
\int_{-\infty}^{\infty} \epsilon (x) dx &= \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} dx \\
&= 1
\end{align}
}

完璧ですね。

f(x)にいろいろ入れてみる

f(x)にいろいろ関数をいれてみて、

それらの関数の「x=0を『真ん中』とした平均値」を求めてみましょう。

定数

{\displaystyle
\begin{align}
\int_{-\infty}^{\infty} a \epsilon (x) dx &= \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} a dx \\
&= a
\end{align}
}


定数がそのままでてきました。実はこれデルタ関数と同じ性質です。

ずっと同じ値なんだから、その平均もその値になるに決まってますね。


1次式

{\displaystyle
\begin{align}
\int_{-\infty}^{\infty} (ax+b) \epsilon (x) dx &= \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} (ax+b) dx \\
&= b
\end{align}
}

あれ、一次式の部分消えましたね!?


これは、上で述べた


{x=0} の左半分と右半分で相殺するから、積分結果は0」


が起こってるわけです。

2次式

{\displaystyle
\begin{align}
\int_{-\infty}^{\infty} (ax^2 + bx + c) \epsilon (x) dx &= \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} (ax^2+bx+c) dx \\
&= \infty
\end{align}
}

これ計算すると、無限大に発散します。

aが正なら正、負なら負の無限大に発散します。


多項式

計算しませんが、奇数次の項しかなければ0だし、2次以上の偶数次の項があれば正か負の∞に発散しますね。


結局、二次以上の項は絶対値がどこまでも大きくなるので、プラスとマイナスで相殺しない限り、その平均値は無限大になっちゃうわけですね。

指数関数

{\displaystyle
\begin{align}
\int_{-\infty}^{\infty} e^x \epsilon (x) dx &= \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} e^x dx \\
&= \infty
\end{align}
}

これも発散します。二次式の時と話は同じです。

三角関数

{\displaystyle
\begin{align}
\int_{-\infty}^{\infty} \cos (x) \epsilon (x) dx &= \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} \cos (x) dx \\
&= 0
\end{align}
}

はさみうちの原理とかでアレすると、これ0になります。

三角関数はず〜っと {y=0} の上下で揺れてるだけなので、それを全範囲で平均とると0になるわけですね。

積分布関数を確認する

ヘヴィサイドの階段関数 - Wikipediaに書いてあるのと同じようにやってみます。

まず「指示関数」とかいうものを持ってきます。

{\displaystyle
\begin{eqnarray}
\chi_A(x) = \left\{ \begin{array}{ll} 
  1 & (x \in A) \\
  0 & (x \notin A) 
\end{array}\right.
\end{eqnarray}
}

これです。範囲内にあれば1、なければ0。

これを使って、累積分布関数、つまり「マイナス無限大からxまでの積分」を


{\displaystyle
\int_{-\infty}^x \epsilon (t) dt = \int_{-\infty}^{\infty} \chi_{(-\infty,x]} (t) \epsilon (t) dt
}


と定義します。

xより大きい所では、指示関数が0になってくれるので、結局右辺と左辺は同じ値になるはずですね。

ただし、あくまでも「マイナス無限大から『ある有限の値xまでの積分』」を定義しただけです。この点、覚えておいてください。



ところでこいつは、イプシロン関数の定義より


{\displaystyle
\begin{align}
\int_{-\infty}^x \epsilon (t) dt &= \int_{-\infty}^{\infty} \chi_{(-\infty,x]} (t) \epsilon (t) dt \\
&=\lim_{t \to \infty} \frac{1}{2t} \int_{- t}^{t} \chi_{(-\infty,x]} (s) ds \\
&=\lim_{t \to \infty} \frac{1}{2t} \left[ g(s) \right]_{-t}^{t} \\
&=\lim_{t \to \infty} \frac{1}{2t} (t+定数) \ \ (∵tが十分大きい時だけを考える) \\
&=\frac{1}{2}
\end{align}
}

いきなりg(s)とかいうのが出てきましたが、指示関数 {\chi_{(-\infty,x]} (s)} の不定積分(原始関数)です。
x以上の所では定数cで、xより小さい所では傾き1の直線(s-x+定数c)です。
xの関数ではなくてsの関数の話をしているので気をつけてください。この部分ではxは定数です。



ということで、やっと答えが出ましたが、累積分布関数はなんと {\frac{1}{2}} です!!


まあ、上でも「水平な直線」と言ってたので、わかってたっちゃわかってたんですが、xに依存しないんですね!!


どっか適当なx軸上の点を持ってきて、「その点より左にある確率」を考えると、いつだって1/2だということです。持ってきた点が宇宙の真ん中になるわけですよ多分。おもしろっ。


x→無限大にしても1にならないけど?

積分布関数はx→無限大とした場合1にならなければいけません。

でもこの 1/2 とかいう累積分布関数は、x→無限大にしてもずっと 1/2 ですね。

ここで思い出してほしいのが、上の定義はあくまで、マイナス無限大から『ある有限の値xまでの積分』」を定義しただけだったということです。

x→無限大とか、x→マイナス無限大の時については何も言ってないわけですよ。

有限の時しか成り立たないですよ、と断って話をしていたので、「無限にしたら矛盾するけど?」とか言われても「知らん。」というわけです。


じゅう無限の時はどうするのって話なんですけど、


x→無限大の時は1、x→マイナス無限大の時は0、って、定義すればいいんじゃないかな!それで完璧に条件を満たしますよ!!


極限とるタイミングをかなり気をつけて扱わなきゃいけない関数の完成ですね。これも超関数なのかな?

{\displaystyle
\begin{eqnarray}
E (x) = \left\{ \begin{array}{ll} 
  1/2 & (- \infty \lt x \lt \infty) \\
  0 & (x = - \infty)  \\
  1 & (x= \infty )
\end{array}\right.
\end{eqnarray}
}



粒子の位置を表す関数として解釈する

デルタ関数が「x=0に粒子がある」という確率を表していたので、イプシロン関数についても改めて解釈してみましょう。


…といっても、イプシロン関数から読み取れることは、「x軸全体のどこかにある」という情報だけです。「どこにある確率が高い」とかそういうことは何も言えません。


というのはまあ、そうなんですが


ここで、次の値を計算してみます。


{\displaystyle
\int_{-\infty}^{\infty} x \epsilon (x) dx
}


この計算は、「粒子が存在する位置の期待値」を表します。

「値×確率」を全部足してるわけです。何回言ったっけこれ。


ただこれ、xって単なる一次式なので、上で計算したように、答え0なんですよね。


平均値としては、x=0になるんです。


宇宙の中心はあなたというわけですよ。つまりね。そういうこと。


ただ、決して「x=0に存在する確率が高い」とは言ってないことに注意してくださいね。

そうなってくると、「平均はx=0」の意味って何なんでしょうね。何か言えるんですかね。

xが正とxが負の部分で、どちらも確率が1/2なので、まあ、観測を何度も何度もやったら、平均はx=0に収束していくっていうことですかね。


ところがこれすごいのが、x=0の地点にいるあなたがやってもそうなるんですけど、

x=10の地点にいる高橋君が同じことをやってもそうなるんですよ。高橋くんにとってもやっぱり、自分を中心に粒子が発見されるわけです。


x=2億の地点にいるロドリゲスにとっても同じです。ロドリゲス中心に粒子が発見される。


わけわかんないですけど、そういうことなんですよ多分。

あなたにとって世界の中心はあなただけれども、高橋君にとっては世界の中心は高橋君なんです。あなたと高橋君は違う地点に立っているにも関わらず、です。

まあ、そういう前提を置いたんだから、この結果は当然なんですけどね。多分。


原点以外のところへずらす

ここから「EMANの物理学」のデルタ関数の記事を参考にしてます。
ネットで物理とか数学とか調べたことのある人はきっと知っている有名サイトです。
いや、まあ、ここまでも参考にしてたけど。


つーことで。

ε(x-a)について考えると


{\displaystyle
\int_{-\infty}^{\infty} f(x) \epsilon (x-a) dx = \int_{-\infty}^{\infty} f(x'+a) \epsilon (x') dx'
}

x'=x-a です。

まあ、そうですね、x=aを「真ん中」とした時の f(x) の平均値がでます。上の高橋君とかロドリゲスとかの話の根拠ですね。


偶関数に似た性質

がんがん省略しますが、

定義式

{\displaystyle
\int_{-\infty}^{\infty} f(x) \epsilon (x) dx = \lim_{t \to \infty} \frac{1}{2t} \int_{-t}^{t} f(x) dx
}

の右辺について


{\displaystyle
\int_{-t}^{t} f(-x) dx=\int_{-t}^{t} f(x) dx
}


が言えるのと、左辺について


{\displaystyle
\int_{-\infty}^{\infty} f(-x) \epsilon (x) dx = \int_{-\infty}^{\infty} f(x) \epsilon (-x) dx 
}


が言えるのとかを使って、引き算したりすると


{\displaystyle
\epsilon (x) = \epsilon(-x)
}


が言えます。ほえ〜。


「偶関数『に似た』」と言っている意味合いについては元サイトを御覧ください。

変数のスケールを変える

{\displaystyle
\epsilon (ax)
}

について考えよう。

つってもまあ、普通に、横方向に 1/|a| 倍されるイメージで良くて

{\displaystyle
\int_{-\infty}^{\infty}\epsilon (ax)dx = \frac{1}{\mid{a}\mid}\int_{-\infty}^{\infty}\epsilon (x)dx
}

です。|a|が1より大きいなら、面積が横方向に縮んでるわけです。普通の関数のイメージと変わらないですね。


これ、デルタ関数でも話は同じなんですが、元サイト


{\displaystyle
\delta (ax)dx = \frac{1}{\mid{a}\mid}\delta (x)dx
}

これは変だ。横から押し潰された結果としてなぜか高さが縮むことを表しているように思える。普通の {f(x)=x^2} などのグラフと比べてしまうと逆のことが起きているイメージなのだが、こう考えないと辻褄が合わないので受け入れるしかない。

という記述があります(閲覧日2017-03-18)が、これ、積分記号を省略してるからですね。

積分記号を省略せずに解釈すれば、あくまでも横に縮むイメージのままで大丈夫です。


微分してみる


イプシロン関数の微分は、直感的に0でしょうよ!!


数式でちゃんと言えないか試してみよう。


…。



はい。



これ0じゃないですね。


こんな感じになりました。元サイトと同じ議論です。


{\displaystyle
\begin{align}
\int_{-\infty}^{\infty} f(x) \epsilon ' (x) dx &= \left[ f(x) \epsilon (x) \right]_{- \infty}^{\infty} - \int_{-\infty}^{\infty} f'(x) \epsilon (x) dx \\
&= - \int_{-\infty}^{\infty} f'(x) \epsilon (x) dx
\end{align}
}


はい。


ε'(x)をf(x)にかけて積分すると、なぜか、f(x)を微分した関数の、全体で平均とった奴の、符号を反転させたものがでてきました。


多分これが、ε'(x)の本質ですね。


δ'(x)と同じで、奇関数的な性質も持っているのでしょう。


……。

{\displaystyle
 \left[ f(x) \epsilon (x) \right]_{- \infty}^{\infty}
}


を0とした所だけ、ちょっと議論が怪しいか…??


…ちょっとどころじゃないな。


f(x)が発散するとき、イプシロン関数かけても0になる保証はどこにもないじゃないか。


微分に関してはもっと考える必要があるな。

まとめ


ということで、ディラックデルタ関数の逆バージョンみたいなものを定義することができましたね。


なんでこれ全然言及されてないんでしょうね?????


使い道がないのか…?




いやでも、量子力学で、粒子の運動量が確定してる時の位置の確率分布は、まさにこのイプシロン分布になるでしょう。


運動量と位置のどちらかがデルタ関数の時、もう一方はこのイプシロン関数になるわけですよ。なるよねえ?




あくまで俺の検索が糞なのか…??


おわり

おわりです。

「EMANの物理学」のデルタ関数の記事ではもっといろいろやってますが、いったん、またの機会にします。

f(x)やε(x)に複素数とかデルタ関数とかイプシロン関数とか突っ込んだりするとまだいろいろ調べられますね。多分ね。定義のやり直しもいるかも?


あとは、デルタ関数の応用先を調べて、同じ所でイプシロン関数も応用が効くかどうか調べると面白そう。


ε(δ(x)) と δ(ε(x)) の性質を調べるくらいは、今日帰ったらやってみようかな。



はい。



それにしても。

頭の中でバーっと考えるのにかかった時間を1とすると、

この記事を書くのに40くらいの時間がかかってます。バランス糞ですね。

アウトプットって大変だ。