読者です 読者をやめる 読者になる 読者になる

ゆるふわブログ

東京大学理科 I 類 2 年の学生です.プログラミング,大学の勉強,日常生活で感じたことをゆるふわに書いていけたらなと思います.技術的に拙いところがあっても温かい目で見守っていただければ幸いです.

メネラウス・チェバの定理から液体窒素が存在することがわかる???

なんともキャッチーなタイトルをつけてしまいました.
メネラウスの定理・チェバの定理は中学の幾何の時間にならう,幾何学の中でも有名な定理です.
これらの定理は簡単な規則があるので容易に覚えられる反面,個人的には面白みに欠ける定理でした.しかし,こいつらの面白い背景を見つけ,それが熱力学で出てきたので,そこらへんのことを書いてみようと思います.
定理自体は中学レベルの数学ですが,説明のため高校の数学 (ベクトル), 物理 (重心,天秤のつりあい) などが登場します.
また,加重重心について理解できると,全ての物質に三態 (固体・液体・気体) があることがわかります.ただ,これには少し大学レベルの熱力学が出てくるため,難しいかもしれません.また,重心座標を使うと,三角形の五心 (重心・垂心・外心・内心・傍心) の座標を簡単に記述することができます.
なるべく専門的な知識がなくても読めるように書くつもりですが,何かわからないことがあれば,どんな些細なことでも結構ですのでコメントで聞いてください!

メネラウス・チェバの定理って?

忘れてしまった人のために復習しておきましょう.まずはチェバの定理です.
f:id:Ysmr_Ry:20170522180938p:plain
と 1 点で交わっている時,

f:id:Ysmr_Ry:20170521213357p:plain

が成り立ちます.(本当は点が外に出ててもいいのですが,簡単な場合のみ考えます)
図に振ってある矢印の順に三角形を回っていけば簡単に作ることができますね.
次にメネラウスの定理です.
f:id:Ysmr_Ry:20170522181007p:plain
で,同じく

f:id:Ysmr_Ry:20170521213357p:plain

が成り立ちます.(これも最もスタンダードな場合です)
ちなみにメネラウスは 98 頃の人間で,チェバの定理は 1670 年頃の話なので,並べるならメネラウス・チェバの定理というのが自然だと思います.

これがどうして成り立つのか見ていきましょう!

天秤のつりあい

下準備として,中学入試でよく出る天秤のつりあいの問題を考えてみましょう.
f:id:Ysmr_Ry:20170522183239p:plain
天秤がつりあうには,(支点からの距離) × (おもりの重さ) が左右で等しくなければなりませんでした.
逆に言えば,左から 2 : 3 の重さのおもりを支える支点は,その比を逆にした 3 : 2 でおもりの間を内分した位置になるということです.

三角形の頂点におもりを乗せる?

チェバの定理の例題として次のような状況を考えてみましょう.
f:id:Ysmr_Ry:20170522214437p:plain
普通にチェバの定理を適用してもいいですが,三角形の頂点におもりを乗せることで考えてみましょう.
三角形の各辺に注目します.例えば,辺 BC を考えます.辺 BC を天秤とみなして,頂点 B, C に先ほどの例のようにおもりを吊るして,その支点が点 L に一致するようにします.すると,先ほど考察したことから,B, C には 3 : 2 の重さのおもりを吊るせば良いことがわかります.辺 AC についても同様に考えると,下図のようにおもりを吊るせば良いことがわかります.
f:id:Ysmr_Ry:20170522214533p:plain
そして辺 AB 上で天秤のつりあいの関係が成り立つように逆算すると,? が 8 であることがすぐにわかります.
また,支点 (重心) に両端のおもりの合計の重さがかかっていると考えると,メネラウスの定理も説明できます.新たに辺 AL を天秤とみなして,3 つの線分が一点で交わっている点を支点としましょう.
f:id:Ysmr_Ry:20170522215905p:plain
実線の状況にメネラウスの定理を適用してみると成り立っていることがわかります.

辺ごとに考えて天秤がつりあうように辻褄を合わせましたが,この三角形全体をひとつの板と考えて,3 つの線分が交わっている 1 点で支えてあげることができます.この点を加重重心 (おもりがかかった上ことで補正された重心) といいます.
f:id:Ysmr_Ry:20170522221504p:plain
ただし,図中の辺上の数値は比の値です.
また,簡単な考察*1から,おもりの重さの比はそれに対する三角形の面積比になっていることがわかります.(例えば,頂点 A のおもりならば,それに対する三角形は △GBC.)
f:id:Ysmr_Ry:20170522223133p:plain

このようにメネラウス・チェバの定理の問題を解く手法を「天秤法」というそうです.

重心座標

△ABC の頂点 A, B, C に a : b : c のおもりを吊るした時の加重重心を [a,b,c] と表すことにします.これを重心座標といいます.比だと定数倍の自由度があるので (1 : 2 : 3 だろうが 2 : 4 : 6 だろうが同じになってしまう),a + b + c = 1 と断って絶対的にします.
f:id:Ysmr_Ry:20170522224751p:plain
そうすると,A([1,0,0]),B([0,1,0]),C([0,0,1]) などと表せます.
三角形内部の点は 0 <= a,b,c <= 1,a+b+c=1 なる実数 a, b, c を用いて [a,b,c] と表せます.

物質の三態が存在することがわかる??

物質の三態とは,固体・液体・気体のことです.
例えば水は日常的な温度で 固体 (氷)・液体 (水) ・気体 (水蒸気) と移り変わっています.ですが,例えば窒素は日常的な温度では空気中に気体として存在し,固体や液体ではありません.全ての物質がこの三態をとるのかどうかは決して自明ではないのです.
これを考えるために,「化学の大原則」を紹介しましょう.それは,
「自発的に進行する反応はエネルギーが下がって安定になるか,乱雑さ (エントロピー) が上がるかのどちらかである」
です.乱雑さとは,散らかり具合のことで,例えば液体よりも,広く拡散して飛び回る気体の方がエントロピーは高いです.
そして,これらの 2 つの要素を 1 つにしたエネルギーをギブスの自由エネルギーといいます.それは,エネルギーを H,エントロピーを S,温度を T として,G = H - TS と定義されます.これにより,エネルギー H が下がれば G も下がり,エントロピー S が上がれば頭に - がついていますから,G も下がります.よって,「化学の大原則」は単に G が下がる向きに進行すると言えるのです.
物質の状態の変化も化学反応の一種です.物質の状態の変化は,固体から液体の方向だけに進むといった一方的なものではなく,双方向に可逆に進行します.よって,例えば 固体 → 液体において G が少しでも下がってしまうと,逆の液体 → 固体では G が上がってしまうので固体 → 液体にしか進行しなくなってしまいます.よって,状態の変化では G は下がりも上がりもせず一定なままなのです.これが示せればとりあえず双方向に行き得ることがわかります.
さて,難しいのですが,ギブスの自由エネルギー G には図形的な意味がありまして,内部エネルギーを U,体積を V とすると,U-SV の 3 次元空間上にある平衡曲面の接平面の U 切片と捉えることができます.U, S, V は示量性状態量といって,量が半分になればその値も半分になります.なので,例えば固体・液体・気体での U をそれぞれ  U_s, U_l, U_g とすると,それらが  m_s, m_l, m_g の比で混じっているとすれば,全体の U は,

f:id:Ysmr_Ry:20170522230916p:plain

となり,これは重心座標  [m_s, m_l, m_g] と捉えられます.S, V についても同様にできるので,結局,固体・液体・気体の混合状態は U-SV 空間上の三角形の内部を動くごとになります.そして,その三角形は 1 つの平面に乗っていますから,その U 切片,つまりギブスのエネルギーは一定です.これで示せました.
ただし,これは「進行するとしたら可逆」であることを示しただけで,実際に進行するかは活性化エネルギー等を考えなければならないので別問題なのですが,まぁ固体・液体・気体それぞれにその状態でいることのメリットがあることが示せただけでもよしとしましょう.






いかがだったでしょうか.最後の熱力学の説明が迷走してる感がハンパないですが,3 次元の図がうまく作れない() ので本当にすみません… 不明な点があればなんでも聞いてください.熱力学の話は下記のサイトを見てみるといいかもしれません.

fnorio.com

もっと知りたい人のために

重心の公式と内分の公式

「天秤のつりあい」で見たことは実は高校で習う 2 つの公式に現れています.

f:id:Ysmr_Ry:20170522211151p:plain

1 つ目は位置  x_1 に質量  m_1 の質点が,位置  x_2 に質量  m_2 の質点があるときの重心の位置  x_G を求める公式,2 つ目は点  x_1,点  x_2 を m : n に内分する点の座標  x_{m:n} を求める公式です.2 つ目は 1 つ目の公式で  m_1 = n,\ m_2 = m としたものと同じですね! これは「天秤のつりあい」で述べたことと等価です.(支点は 2 つのおもりを 1 点に集中した時の重心とみなせる)

重心座標のベクトル表記

先ほどの重心の公式はベクトルで 3 次元にも拡張できるので,重心座標と実際の座標をこのように結びつけることができます.

f:id:Ysmr_Ry:20170522232221p:plain

A, B, C の位置ベクトルを a, b, c で重み付けして平均を取れば良いのです.

三角形の五心の重心座標

三角形の五心の重心座標は,重心を G,垂心を H,外心を O,内心を I,傍心を J とすると,G([1,1,1]),H([tan(A), tan(B), tan(C)], O([sin(2A), sin(2B), sin(2C)]), I([a,b,c]), J([-a,b,c], [a,-b,c], [a,b,-c]) と表せます.(角 A を A,辺 BC (頂点 A の対辺) を a などと表記しています)
重心は自明,垂心は例えば上の図で AL と BC が垂直だとすると,BL = AL/tan(B), LC = AL/tan(C) となり,BL : LC = tan(C) : tan(B) などとなるからです.
また,外心は △ABC が O を中心とした外接円に内接していますから,円周角と中心角の関係から,例えば ∠BOC = 2A となります.すると,△BOC の面積は,外接円の半径を R として R^2sin(2A)/2 となります.すると三角形の面積比が sin(2A) : sin(2B) : sin(2C) になるので,重心座標と対する三角形の面積比からわかります.内心は角の 2 等分線の公式から,BL : LC = c : b などとわかります.傍心は内心のうち 1 つの座標を - にして拡張したものです.(説明雑)
高校ではいわば定性的にしか語られなかった五心が座標を簡単にきっちりと計算できるようになるので地に足がついた感じがしますねw
これを使うと例えばこんなのが簡単に作れちゃいます!

See the Pen Tri by Ysmr-Ry (@As2) on CodePen.

カーソルを合わせてクリックすると点が置けて,3 つ揃うごとに三角形ができその五心などを教えてくれます.三角形ができた後に点をおくとリセットされます.
Enter を押すと補助線の 表示 / 非表示 が切り替えられます.

実はベクトルの問題にもなってる?

ベクトルの典型題で

f:id:Ysmr_Ry:20170522235908p:plain

を満たす点 G を求めろみたいなのがあると思いますが,これは A, B, C に 8, 9, 6 の重さのおもりを吊るした場合の加重重心を表しています.(まさに上の説明で用いた図の状況)
現にこれを変形すると,

f:id:Ysmr_Ry:20170523012443p:plain

となり,重心座標のベクトル表記に一致しています.

*1:例えば,△GABと△GCAなら,底辺が AG で共通で,高さの比が BL : LC = 2 : 3 なので面積比は 2 : 3

金星と地球の公転軌道が描く図形

Twitter でこのようなものが回ってきました.

最初は,この包絡線がカージオイドに似てるなと思いました.
これとは少し違うのですが,同じ円上で角速度が 2 倍の関係にある 2 点を結ぶ直線の包絡線はカージオイドになるそうです.

http://www.osaka-kyoiku.ac.jp/~tomodak/report/deltoid_grapes.pdf

では異なる半径の円上を異なる角速度で回っている点を結んだ直線の包絡線はどうなるのか気になりました.

いろいろ探しました.

まず,同じようなシミュレーションをやってる人がいました.

www.webtoolnavi.com

これのソースを覗いてみると,角速度の比は 8 : 13 でやっているようでした.

次に,この現象を詳しく説明している資料がありました.

http://www.sci-museum.jp/files/pdf/study/research/2011/pb21_029-036.pdf

これによると,中心天体(太陽など)と、その周りを公転する 2 天体(惑星など)の間の周期的な重力の変化により公転軌道が影響を受け (軌道共鳴),公転周期の比が整数比になるのだそうです.これを尽数関係というらしいです.特に,金星と地球の場合は 8 : 13 となり,これは 1 : 1.625 ですから,黄金比 1 : 1.618 に近く,"きれい" な比になっています.ペンタグラム等が出てくる理由もなんとなくわかりますね.

以下見にくくなるので pdf で.

github.com

これだけ見るとあっさりしてますが,けっこう大変でした…

で,例によって Desmos で描画してみました.線を重ねるより見やすくてきれい.

https://www.desmos.com/calculator/ksmybe3rrv

線分ではなく直線とすると内側の軌道円の外にはみ出している星型が見えるようです.
ちなみに  n_1,\ n_2 はスライダーを動かす等して変えられます.パラメータの定義域は適宜調節してください.

[追記]
カージオイドっぽいなというのは間違ってなかったようです.正確には,より一般なパスカルの蝸牛形ですが…
どうしてそうなるかは pdf の方に追記しておいたのでご覧ください.

Desmos で遊んでみた

Desmos っていう手軽にグラフが書けるサイトを見つけたのでちょっと遊んでみました.

Square Wave (Fourier Transform)

(-1)^n を加えるだけで円の動きに味が出る!

Cube

Desmos で 3 次元の表現はできないだろうかと思って少しやってみた.線分でやるとなんか重かったので,直線でやってみました.(見にくい)
 (a,b) を再生ボタン押して適当にアニメーションさせると,消失点がカメラの画面への射影  (x_c,y_c) と一致して不変なのがよくわかります.
これは立方体の奥に向かう直線の方向ベクトルが (0,0,1) だから.



ちなみにこの記事で使ってたのを見て知りました.グラフアートってすごい…

corollary2525.hatenablog.com

Lorentz 変換と双曲線

1 年生の夏学期,「基礎方程式とその意味」という講義で時期尚早にもやった Lorentz 変換.
導出の過程は追うことができましたが,直感的な理解ができずしっくりと来ていませんでした.
天下り的に双曲線関数を使うときれいになるということも,どのような背景があるのかさっぱりでした.

今日から,統計と多変量解析の本を読み終わってひと段落ついた (それについての記事はまた後日) ので,途中で挫折した相対論を勉強しようと本を読み始めました.
そして,このサイトを見つけてしまいました.

d.hatena.ne.jp

非常に美しく・わかりやすく Lorentz 変換を説明しています.
また,この資料でさらに理解が深まりました.

https://www.kaijo.ed.jp/wp-content/uploads/2016/02/2013summer-5_2.pdf

内積空間と絡めて説明しています.Lorentz 変換における不変量 (の絶対値) が Minkowski ノルムの 2 乗であることがわかります.

この感動を是非伝えるべく記事にまとめねば (笑) と思い,僕なりにまとめてみました.

github.com

数式混じりの記事は LaTeX にしたほうがいいという結論に至った.

LaTeX 練習

最近教習所に通ってあとはグダグダしててあんまりプログラミングしてないです()

今日あるの知らずにノー勉で突入した仮免学科試験が合格していたことがわかりました.
47/50 だったけど…

春休みはその他学習塾で個別指導のバイトをしていて,受験生が卒業してしまったので今持ってる生徒が高 2 の子 1 人なんですね.暇だし,1 人相手なら余裕あるし,何かできないかなと…

そこで,バイトの生徒のために LaTeX の練習がてら数学のプリントを作りました.TikZ パッケージで図も入れられるようになった.

github.com

数式のフォントは数学ガールのあれです.

何気に GitHub 使ったの初めてです… 使い方よくわかってない…

Haskell で ABC 001 を解く

qiita.com

この記事を読んだからやろうと思った.深い意味はない.

AtCoder Beginner Contest 001 - AtCoder Beginner Contest 001 | AtCoder

A - 積雪深差

main :: IO ()
main = do
  h1 <- readLn
  h2 <- readLn

  print $ h1-h2

B - 視程の通報

import Control.Applicative
import Text.Printf

main :: IO ()
main = do
  m <- (/1000) <$> readLn :: IO Double

  printf "%02.0f\n" $ cond m

cond :: Double -> Double
cond m
  | m < 0.1            = 0
  | m >= 0.1 && m <= 5 = m*10
  | m >= 6 && m <= 30  = m+50
  | m >= 35 && m <= 70 = (m-30)/5+80
  | m > 70             = 89

MultiWayIf 拡張が Compile Error で切れそうだった.

C - 風力観測

import Control.Applicative ((<$>))

main :: IO ()
main = do
  [deg, dis] <- map read . words <$> getLine
  let ansW = w $ roundAt 1 $ dis/60

  putStrLn $ if ansW == 0
    then "C 0"
    else dir (deg/10) ++ " " ++ show ansW

roundAt :: Int -> Double -> Double
roundAt d x
  | dec >= 0.5 = fromIntegral (int+1)/10^d
  | otherwise  = fromIntegral int/10^d
  where
    (int,dec) = properFraction $ x*10^d

dir :: Double -> String
dir deg
  | null cand = "N"
  | otherwise = snd . head $ cand
  where
    cand = filter (\(i,_) -> 11.25+i*22.5 <= deg && deg < 33.75+i*22.5) $ zip [0..] ["NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"]

w :: Double -> Int
w dis = head $ filter (\i -> fst (lims!!i) <= dis && dis <= snd (lims!!i)) [0..12]
  where
    lims = [(0.0,0.2),(0.3,1.5),(1.6,3.3),(3.4,5.4),(5.5,7.9),(8.0,10.7),(10.8,13.8),(13.9,17.1),(17.2,20.7),(20.8,24.4),(24.5,28.4),(28.5,32.6),(32.7,200.0)]

Haskell の round は HALF_EVEN とかいうそうで偶数に丸めるらしく,挙動が望んだものと違ったので自分で実装せざるを得なかった.このサイトを参考にしました.
oropon.hatenablog.com

D - 感雨時刻の整理

import Control.Applicative ((<$>))
import Control.Monad (replicateM)
import Data.List (sort, splitAt)

type Section = (String, String)

main :: IO ()
main = do
  n <- readLn
  secs <- fmap sort $ replicateM n $ do
    (s,_:e) <- splitAt 4 <$> getLine
    return (roundTF s, roundTS e)

  mapM_ (\(s,e) -> putStrLn $ s ++ "-" ++ e) . reverse $ foldl f [] secs

  where
    f :: [Section] -> Section -> [Section]
    f [] s = [s]
    f (x:xs) s
      | x<&>s     = x<|>s:xs
      | otherwise = s:x:xs

show02d :: Int -> String
show02d i
  | i < 10    = "0" ++ show i
  | otherwise = show i

roundTF :: String -> String
roundTF t
  | m >= 60   = show02d (h+1) ++ show02d (m-60)
  | otherwise = show02d h ++ show02d m
  where
    roundI m = m`div`5*5

    h = read $ take 2 t
    m = roundI . read $ drop 2 t

roundTS :: String -> String
roundTS t
  | m >= 60   = show02d (h+1) ++ show02d (m-60)
  | otherwise = show02d h ++ show02d m
  where
    roundI m
      | m `mod` 5 /= 0 = (m`div`5+1)*5
      | otherwise      = m

    h = read $ take 2 t
    m = roundI . read $ drop 2 t

(<&>) :: Section -> Section -> Bool
(<&>) (a,b) (c,d) = c <= b

(<|>) :: Section -> Section -> Section
(<|>) (a,b) (c,d) = (min a c, max b d)

Data.List.Split が Compiler Error で splitOn "-" ってできなくて切れそうだった.

Haskell で競プロの Straightforward な問題をやるといい練習になる (?)

補足 - Text.Printf.printf の仕組み

printf はどうして可変長引数を取れるんでしょうか.
その秘密は PrintfType 型クラスにありました.
PrintfType 型クラスは,

class PrintfType r where
  printf :: String -> r

と定義されていて,PrintfType のインスタンスには,

instance PrintfType String
instance PrintfType (IO ())
instance (PrintfArg a, PrintfType r) => PrintfType (a -> r)

があります.最初の 2 つが printf の型の終端にあたります.
3 つ目のように,再帰的にインスタンス宣言することで,printf :: String -> a -> a -> … -> a -> (IO () or String) となります.よって,printf は IO アクションとしてだけでなく,C 言語でいう sprintf のように出力先が文字列でも使えます.
以下のサイトを参考にしました.
stackoverflow.com

連成振動と 2 次超曲面

テスト無事終わりました!
今日は振動・波動論のテスト中に気づいたことをまとめてみようと思います.

振動・波動論のテストの大問 1 は連成振動の問題でした.3 連成振子.3 つの質量 M のおもりが互いにバネで接続されているやつです.ここでは一般に N 連成振子を考えます.N 個のおもりの位置を  x_n\ (n=1,2,3,\cdots) とすると,運動方程式は,

 \begin{align*}
  M\ddot{x}_n &= -k(x_n-x_{n-1})+k(x_{n+1}-x_n)\\
  \ \\
  M \ddot{\mathbf{x}} &= -K\mathbf{x} \\
  \ \\
  \mathbf{x} &= \begin{pmatrix}
    x_1 \\
    x_2 \\
    \vdots \\
    x_N
  \end{pmatrix} \\
  \ \\
  K &= \begin{pmatrix}
    2k & -k & 0 & \cdots & \cdots & \cdots & 0 \\
    -k & 2k & -k & 0 & \cdots & \cdots & 0 \\
    0 & -k & 2k & -k & 0 & \cdots & 0 \\
    \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\
    0 & \cdots & \cdots & 0 & -k & 2k & -k \\
    0 & \cdots & \cdots & \cdots & 0 & -k & 2k
  \end{pmatrix}
\end{align*}

となります. x_0 = x_{N+1} = 0 という形式的な変数を用意すれば,第 1 式のように綺麗に表されます.それを行列とベクトルでまとめたのが第 2 式です.規則性のおかげで, K は対称行列になります.よって,固有ベクトルを正規直交基底にしたものを束ねた直交行列で対角化できます.この直交行列を  P とすると,

 \begin{align*}
  P^{-1} K P &= \begin{pmatrix}
    \lambda_1 & 0 & \cdots & 0 \\
    0 & \lambda_2 & \cdots & 0 \\
    \vdots & \vdots & \ddots & \vdots \\
    0 & 0 & \cdots & \lambda_N
  \end{pmatrix} \\
  \ \\
  M\ddot{\mathbf{x}} &= -P\begin{pmatrix}
    \lambda_1 & 0 & \cdots & 0 \\
    0 & \lambda_2 & \cdots & 0 \\
    \vdots & \vdots & \ddots & \vdots \\
    0 & 0 & \cdots & \lambda_N
  \end{pmatrix} P^{-1} \mathbf{x} \\
  \ \\
  MP^{-1}\ddot{\mathbf{x}} &= -\begin{pmatrix}
    \lambda_1 & 0 & \cdots & 0 \\
    0 & \lambda_2 & \cdots & 0 \\
    \vdots & \vdots & \ddots & \vdots \\
    0 & 0 & \cdots & \lambda_N
  \end{pmatrix} P^{-1} \mathbf{x}
\end{align*}
よって,
 \begin{equation*}
  \mathbf{Q} = \begin{pmatrix}
    Q_1 \\
    Q_2 \\
    \vdots \\
    Q_N
  \end{pmatrix} = P^{-1} \begin{pmatrix}
    x_1 \\
    x_2 \\
    \vdots \\
    x_N
  \end{pmatrix} = P^{-1} \mathbf{x}
\end{equation*}
と基準座標を導入すると,
 \begin{align*}
  M\ddot{\mathbf{Q}} &= -\begin{pmatrix}
    \lambda_1 & 0 & \cdots & 0 \\
    0 & \lambda_2 & \cdots & 0 \\
    \vdots & \vdots & \ddots & \vdots \\
    0 & 0 & \cdots & \lambda_N
  \end{pmatrix} \mathbf{Q} \\
  \ \\
  M\ddot{Q}_n &= -\lambda_n Q_n
\end{align*}
となり,各方程式は単振動型の微分方程式になります.よって, Q_n は解けるので,基準座標の定義を遡って  \mathbf{x} = P \mathbf{Q} と解が求められます.つまり,各  x_n は角振動数  \sqrt{\frac{\lambda_1}{M}},\ \sqrt{\frac{\lambda_2}{M}},\cdots, \sqrt{\frac{\lambda_N}{M}} の単振動の重ね合わせ (線形結合) で表されることがわかります.

つまり,1 つの固有値が 1 つの基準振動数  \omega_n = \sqrt{\frac{\lambda_n}{M}} に対応しているわけですが,固有ベクトルは対応する基準振動の振幅比を表します.
これは, P が直交行列なので  P^{-1} = {}^t\!P であることから,固有ベクトル \mathbf{v_n} とすると,

 \begin{align*}
  P &= \begin{pmatrix}
    \mathbf{v_1} & \mathbf{v_2} & \cdots & \mathbf{v_N}
  \end{pmatrix} \\
  \ \\
  \mathbf{Q} &= P^{-1}\mathbf{x} \\
  &= {}^t\!P\mathbf{x} \\
  &= \begin{pmatrix}
    \mathbf{v_1} \\
    \mathbf{v_2} \\
    \vdots \\
    \mathbf{v_N}
  \end{pmatrix} \begin{pmatrix}
    x_1 \\
    x_2 \\
    \vdots \\
    x_N
  \end{pmatrix}
\end{align*}

となり,基準座標  Q_n \mathbf{v_n} = (v_{n1}, v_{n2}, \cdots, v_{nN}) の各成分で  x_n を線形結合した  \displaystyle\sum_{i=1}^N v_{ni}x_i で表されるからです.

で,テストで,基準座標で全エネルギー  E を表しなさいって問題が出たんですね.まぁ,基準振動のエネルギーの和だろうから,

 \displaystyle \begin{equation*}
  E = \sum_{n=1}^N \frac{1}{2}M \left(\dot{Q}_n^2 + \omega_n^2 Q_n^2\right)
\end{equation*}

で終わりにしようと思ってたんですが,もうちょっとちゃんと書いといたほうがいいのかなと思って.プリントに書いてあったことを思い出してたんですが… プリントには,連成振動の全エネルギーをまず  x_n の方で表してから, Q_n に持って行くみたいな流れだったんです.で, x_n で全エネルギーを表すと,

 \begin{equation*}
  E = \frac{1}{2}M{}^t\!\dot{\mathbf{x}}\dot{\mathbf{x}} + \frac{1}{2} {}^t\!\mathbf{x}K\mathbf{x}
\end{equation*}

って書いてあったんですね! 弾性エネルギーが 2 次超曲面の形で書けちゃうんです!
(タイトル回収)
すごく綺麗だと思いました. \mathbf{x} を一つのデータと捉えた時,2 次曲面はまさにその "2 次" の形なのだなぁと.

なんでこうなるのかちょっと考えてみました.
 x_n運動方程式 \dot{x}_n をかけると,力 × 速度で仕事率になるので,

 \displaystyle \begin{align*}
  M \ddot{x}_n \dot{x}_n &= +kx_{n-1}\dot{x}_n -2kx_n\dot{x}_n +kx_{n+1}\dot{x}_n \\
  \frac{d}{dt}\left(\frac{1}{2}M\dot{x}_n^2\right) &= +kx_{n-1}\dot{x}_n -\frac{d}{dt}\left(\frac{1}{2}2kx_n^2\right) +kx_{n+1}\dot{x}_n
\end{align*}

これを n が 1 から N まで足し合わせると, x_0 = x_{N+1} = 0 は消えて,積の微分から  \displaystyle\dot{x}_nx_{n+1} + x_n\dot{x}_{n+1} = \frac{d}{dt}\left(x_nx_{n+1}\right) とまとめられるので,

 \displaystyle \begin{align*}
  \frac{d}{dt}\left(\sum_{n=1}^N \frac{1}{2}M\dot{x}_n^2\right) &= \frac{d}{dt}\left(\sum_{n=1}^N \left(k x_{n}x_{n+1}-\frac{1}{2}2kx_n^2\right)\right) \\
  &= -\frac{d}{dt}\left(\frac{1}{2}{}^t\!\mathbf{x}K\mathbf{x}\right) \\
  \frac{d}{dt}\left(\frac{1}{2}M{}^t\!\dot{\mathbf{x}}\dot{\mathbf{x}} + \frac{1}{2} {}^t\!\mathbf{x}K\mathbf{x}\right) &= 0
\end{align*}

となります. K は対称行列ですから,i < j を満たす (i,j) 成分 (対角成分の上側) と i > j を満たす (i,j) 成分 (対角成分の下側) が同じです.よって, \dfrac{1}{2} {}^t\!\mathbf{x}K\mathbf{x} \dfrac{1}{2} によって 1 つ分が残ります.また,対角成分は 1 つだけなので, \dfrac{1}{2} によって,半分になります.第 1 式の右辺を見ると, \dfrac{d}{dt} の中で, x_nx_{n+1} には  \dfrac{1}{2} がかかっていませんが, x_n^2 の項にはかかっています.よって,これは 2 次超曲面の形で書けるのです*1

これを  \mathbf{x} = P\mathbf{Q} を代入して基準座標の式に変えます.

 \displaystyle \begin{align*}
  \frac{1}{2}M{}^t\!\dot{\mathbf{x}}\dot{\mathbf{x}} + \frac{1}{2} {}^t\!\mathbf{x}K\mathbf{x} &= \frac{1}{2}M{}^t\!{(P\dot{\mathbf{Q}})}P\dot{\mathbf{Q}} + \frac{1}{2} {}^t\!{(P\mathbf{Q})}KP\mathbf{Q} \\
  &= \frac{1}{2}M{}^t\!\dot{\mathbf{Q}}P^{-1}P\dot{\mathbf{Q}} + \frac{1}{2} {}^t\!\mathbf{Q}P^{-1}KP\mathbf{Q} \\
  \ \\
  &= \frac{1}{2}M{}^t\!\dot{\mathbf{Q}}\dot{\mathbf{Q}} + \frac{1}{2} {}^t\!\mathbf{Q}\begin{pmatrix}
    \lambda_1 & 0 & \cdots & 0 \\
    0 & \lambda_2 & \cdots & 0 \\
    \vdots & \vdots & \ddots & \vdots \\
    0 & 0 & \cdots & \lambda_N
  \end{pmatrix}\mathbf{Q}
\end{align*}

これで,形は少し違いますが,上にあげた基準座標でのエネルギー  E の表現が導けました.
ここで注目したいのが 2 次曲面がどうなったかです.上の方で説明したように,対角化を連立微分方程式を解くのに利用していると捉えることもできますが, 2 次超曲面によって弾性エネルギーを表すと,対角化は 2 次曲面  {}^t\!\mathbf{x}K\mathbf{x} を標準形  \displaystyle \sum_{n=1}^N \lambda_n Q_n^2 に変形していると捉えることができるのです!対角化の応用例というと,この連成振動の話と,微分積分学線形代数学を大学初年次で習っている身としては,Hessian による 2 変数関数の極値判定をあげたくなりますが,あれも, f_x(x,y) = f_y(x,y) = 0 を満たす停留点の周りで 2 次近似をして,2 次曲面の標準形を求め, f(x,y) = x^2+y^2,\ f(x,y) = -x^2-y^2,\ f(x,y) = x^2-y^2 の場合に帰着していると直感的には捉えることができますから*2,この話と繋がっていたのです.一見バラバラだった対角化の応用例が,実は同じ話だったと自分の中で繋がったのでとてもうれしかったです.微分積分学線形代数学,振動・波動論,今期取っていた 3 つの授業で暗に同じことを繰り返し教わっていたのだなぁとしみじみ思いました.

*1:2 次超曲面では, K の (i,j) 成分が  x_ix_j の係数に対応します.

*2:つまり,2 次超曲面の係数行列が  \begin{pmatrix} f_{xx} & f_{xy} \\ f_{yx} & f_{yy} \end{pmatrix} となるということです.