二階微分だけの演算子のGreen関数(フーリエ変換経由)
前回、単振動方程式におけるGreen関数を導出した。
koideforest.hatenadiary.com
二階微分だけとなると と置き換えることに対応するのは明らかである。
実は、ここから直接求めようとすると、二位の極をまともに扱わないといけないので、死にかけた(というか死んだ)。
そのため、単振動のGreen関数から の極限を取ってあげると、
と素直に求まる。
一応、確認すると、
「一度、困難を外す」というのは時に重要だと感じた次第である。
単振動方程式に対するGreen関数(コーシーの主値積分ver.)
一次元の単振動の微分方程式に対するGreen関数を求めてみる。
したがって、計算するべき積分は、
時間が正か負かで積分経路が変わるので、以下場合分けで考える。
今、実軸上の極を全て避けるように積分経路を取ったので、
極がギリギリ積分経路内に入らないような円弧を使って避ける。
極は二つあるので、それぞれ避ける。
二つ目。
Jordanの補助定理により、この大円弧の積分はゼロになる。
したがって、
積分経路の取り方が逆になるため、(結果には多分効かないが)符号に注意。
今回も、積分経路内に極は入れないようにする。
極が含まれないのでゼロ
大円弧もゼロ。
小円弧は有限の値を返す。
の時と比較して符号が逆になっていることに注意。
したがって、
最終的に、単振動のGreen関数は次のように得られた。
このシグネイチャー関数によるGreen関数のトンガリが関数を与える。
円周率が3.8より大きい証明(?)
円周率が4である動画が話題になった。
「円周率=4」を証明してみせましょう。“3.14…”を覆す新理論(?)に驚愕する声多数! 理数系学生「反論思いつかなくて草」
これと似たようなことを自分でもやってみた。
アイデアは「波数が無限に大きく、かつ振幅が無限に小さい正弦波の長さは、(見た目)直線と同じ」というものである。
ではもはや直線にしか見えない。
波数が大きくなるにつれて、徐々に振幅を小さくしているが、実はこれらの線の長さは全て同じである。
をまで線積分すると、(:第二種完全楕円積分)であるので、
と数値的に求まる。
以下、種明かし。
次の正弦波を考える。
線積分がし易いように、媒介変数表示で表すと、
よって、 における正弦波の長さは、周期を4倍して、それを個考えれば良く、1周期 だから、
ここで、 とした。
見るとわかるが、 であれば であっても線分の長さが変わらない。
ここでは (つまり通常の正弦波)として計算を進める。
ここで、 は完全第二種楕円積分として、次のように与えられる。
一見すると簡単そうだが、初等的には歯が立たないことが知られている。
楕円積分 - Wikipedia
は 1.35064... と数値計算で求まるので、冒頭にあったように、 であることがわかる。
今は と置いたが、論理的には はいくらでも大きく出来るので、はいくらでも大きくなることになる。
本当に が3.14... より大きいことを証明するためには、下限を求める必要がある。
実は今やっているのは、数学的には上から抑えていた に過ぎない。
これを下から抑えようとすると、は有限で の時に線分の長さが最小になることを使うと、の区間における線分の長さはであり、という極当たり前の結果が得られる。
まぁ楕円積分中にもが入っているから、堂々巡りは堂々巡りなのだが、楕円積分に初めて触れるには丁度良いテーマだったのではないかと思っている。
pythonでペンローズタイリング
ペンローズタイリングとは、ペンローズが開発した非周期的な図形の敷き詰め方である。
以下のサイトで、ペンローズタイリングの方法と、そのpythonスクリプトが公開されている。
Penrose Tiling Explained
図の描画には、pycairoが使われていて、事前にインストールする必要がある。(pip で普通に入ったので、特に問題はないと思う。)
また、スクリプト内には xrange が使われているが、python3では入っていないので、range に置き換える必要がある。
実際に使って、図を作ってみた。
デフォルトでは色の設定が赤と青だが、自分で色を変えることが出来る。
また図形の細かさも 変数 NUM_SUBDIVISIONS を変更することで調整出来る。
操作として、時計回りに注目する三角形を分割していくのだが、デフォルトでは二つで一組になるように、偶数番目の三角形は奇数番目に鏡映操作を施したものになっている。
その操作を off にして計算したものがこちら。
自分で実際に試せるところが、pythonの魅力だなぁと改めて感じた。
円運動
原点を中心とした円の軌跡は以下のように記述出来る。
原点周りの円周上の運動を考える。そのためは定数で時間変化しないとし、角度の時間微分を角速度として定義する。(円運動を「角度のみが変化する運動」と言い換えても良いだろう。)
運動方程式の用途として、以下の二つが考えらえる。
- 力 → 軌跡()
- 軌跡()→ 力
通常は 1. のプロセスについて使われることが多い(「力がわかっていて、その場合の軌跡を求めよ」的な)。
ここでは 2. のプロセスを辿り、円運動を起こすために必要な力について考える。
まずは軌跡を時間微分する。
ここで、との間の角度がどうなっているかを調べるために、内積を取ると、
したがって、とは直交している。
もう少し具体的に言えば、は円弧上の点における円に対する接線方向を表している。
また、角度変化においてが円弧の長さを表すから、は円弧上で軌跡が動く速さを表している。
したがって、運動方程式は
と表せる。
ここから、円運動をさせるためには、接線方向の力と、原点方向の力(求心力)が必要なことがわかる。
特別な場合として、角速度が一定(、 )な等速円運動を考える。
この時、であるから、「求心力のみが働く時、等速円運動が起こる」と言える。
個人的には、求心力の大きさがいつも覚えられなくて困っていたが、
と思えば、いくらか頭に残りそうな気がしている。
頂角が小さい二等辺三角形の底辺について
回転運動の説明を読んでいる時に、角度が小さい時の差ベクトルの近似について気になったので考えて見た。
等速円運動 [物理のかぎしっぽ]
以下の図のような二等辺三角形における底辺(青)、円弧(赤)、そして垂線(緑)を考える。
図では頂角は30度でプロットしてある。
問題によっては、赤を近似するために青にしたり、その逆もあったり、何を基準にするかややこしい面があるように思う。
とりあえず、それぞれを式で表す。二等辺三角形の頂角および辺の長さをとすると
青を表現するのに関数を使うため、比較として、三角形における関数の最も直接的な利用である垂線(緑)を登場させた。
底辺と垂線は、次のようにして差を評価出来る。
角度が非常に小さい()時、となって、青と緑は(ほぼ)一致する。
赤と青は、関数のTaylor展開からで両者が一致するのがすぐわかる。
よって、最終的には赤青緑が全て近似的に等しくなる。
図を作るのに使ったスクリプト
from matplotlib import pyplot as plt import numpy as np import math fig = plt.figure() ax = fig.add_subplot( 1, 1, 1 ) d = 30. # degree radians = np.array([ math.radians(d) for d in np.linspace( 0, d, 100 ) ]) c = np.cos( math.radians(d) ) s = np.sin( math.radians(d) ) # triangle tri = plt.Polygon( ( ( 0, 0 ), ( 1, 0 ), ( c, s ) ), color = "black", alpha=0.1 ) ax.add_patch( tri ) # arc ax.plot( np.cos( radians ), np.sin( radians ), color = "red" ) # base line of triangle xs = np.linspace( c, 1., 100 ) ys = ( ( s - 0. ) / ( c - 1. ) ) * ( xs - c ) + s ax.plot( xs, ys, color = "blue" ) # vertical line in triangle ax.vlines( c, 0., s, color = "green" ) plt.tick_params( left='off', right='off', bottom='off', top='off', labelleft='off', labelright='off', labelbottom='off', labeltop='off' ) plt.savefig( "triangle.png" )
三角形および補助線の書き方は以下を参照
Python/Matplotlibで三角形の描画
【Python@matplotlib】matplotlib にて横、縦の補助線を描く方法について - Qiita