Web教材一覧数値解析

二次形式

参照:JavaScriptの計算プログラム


二次形式(Quadratic Form)とは

二次形式とは,二次の項のみからなる多項式のことです。
  例: 3x2 - 2xy + 3y2
    ( 3x2 - 2xy + 3y2 + 4x のように1次の項があるものは二次形式ではありません。
   しかし、X=x+a, Y=y+b のような変換をして二次形式にすることができます。)
 3x2 - 2xy + 3y2 + 4z2 のように変数はいくつあってもかまいません。
 しかし多変数では計算が複雑になるので、ここでは2変数を主として、参考的に3変数に言及するだけにします。

二次形式とグラフ
 一般に(1次の項も持つ)2次関数は楕円あるいは双曲線になります。
 上述のような変換をすれば、平行移動により原点を中心としたグラフになります。
 さらに後述の正規化をすると、回転移動により、X軸・y軸に対称なグラフになります。

 しかし、二次形式は定数項ももたず f(x,y) の式を扱うのが目的で、f(x,y) = 0 を対象にしません。
 グラフでいうなら f(x,y) = c の等高線のグラフになります。

参照ax2+2bxy+cy2=1 のグラフ

二次形式の行列表示

3x2 - 2xy + 3y2 は、次のように行列表記できます。
     ┌     ┐┌ ┐        ┌             ┐┌ ┐
  [x y] │ 3 -1││x│   検証 │3x-1y  -1x+3y││x│  3x2-1xy - 1xy+3y2 = 3x2 - 2xy + 3y2
     │-1  3││y│        └             ┘│y│ 
          └     ┘└ ┘                         └ ┘
これを、x → x0, y → x1, … と一般化して
  T A x   xT は x の転置行列, Aは対称行列
と表記します。

Aの公式

二次関数を a00 x02 + a11 x12 + a01 x0x1 とすると
      ┌           ┐
   A= │a00    a01/2│  a01/2 = a10
      │a10/2  a11  │  対象行列になる
           └           ┘
3変数でも同様です。
  a00 x02 + a11 x12 + a22 x22
   + a01 x0x1 + a12 x1x2 + a20 x2x0
      ┌                  ┐
   A= │a00    a01/2  a02/2│
      │a10/2  a11    a12/2│
      │a20/2  a21/2  a22  │
           └                  ┘

標準二次形式

3x2 - 2xy + 3y2 のような二次形式に対して
のように他変数の積を含まないものを標準二次形式といいます。
グラフで直観的にいえば、一般の二次形式は軸に対して傾いているのに標準二次形式は軸に対して対象です。
長軸・短軸の長さは維持されます。
すなわち、標準化とはグラフを回転することだといえます。
(標準化してxyの項をなくすことを平方完成ともいいます)
唐突ですが、3x2 - 2xy + 3y2 において、
  X = (x+y)/√2, Y = (x-y)/√2 とすると、
  x = (X+Y)√2 、Y = (X+Y)√2
これを上式に代入すると
  2X2 + 4Y2 
になります。

変換式を求める前に、直接に
   PX2 + QY2
の係数P、Qを求めるのが通常です。
それには固有値を使います。

参照:固有値・固有ベクトルの基礎計算ライブラリ 
         ┌           ┐
  A - λE = │ 3-λ -1   │
            │-1    3-λ│
                └           ┘
から (3-λ)2 - 1 = 0   ∴ λ = 2, 4    (固有値)
この固有値が、X、Yの係数P、Qになります。
  2X2 + 4Y2
  4X2 + 2Y2
2つの解が得られましたが、グラフでいえば長軸をx軸・Y軸のどちらにするかの違いです。
代数的には、XとYの係数を入れ替えたことになります。

2変数での固有値の公式

一般に固有値の計算は高次式の解を求めるのですが、2変数のときは2次式なので簡単です。
         ┌               ┐
  A - λE = │ a00-λ  a01/2 │
            │ a10/2   a11-λ│
                └               ┘
    (a00-λ)(a11-λ) = (a01/2)2

    λ = (1/2) * {a00 + a11 ±√((a00-a11)2 + a012))}

  a00 = 3, a11 = 3, a01 = -2 とすれば
    λ = (1/2) * {3 + 3 ±√((3-3)2 + (-2)2))}
       = 4, 2

標準化(x,y → X,Y 変換)

先に、X = (x+y)/√2, Y = (x-y)/√2 としましたが、それを求める方法を示します。
固有値λ = 4, 2 を A-λE に代入します。

λ = 4 のとき
  ┌           ┐┌ ┐  ┌      ┐┌ ┐
  │ 3-λ -1   ││x│= │-1  -1││x│ 
  │-1    3-λ││y│  │-1  -1││y│
    └           ┘└ ┘  └      ┘└ ┘
  これより、x + y = 0 となります。その関係を行列表示すると
   ┌ ┐   ┌  ┐
    │x│= k│-1│= 0
    │y│   │ 1│
    └ ┘   └  ┘
 kは任意定数であり、単位ベクトルにするには k = 1/√{(-1)2 + 12} = 1/√2 になります。
 これから、X = (x+y)/√2 の関係になります。

同様にλ = 2 のとき
  ┌           ┐┌ ┐  ┌      ┐┌ ┐          ┌ ┐   ┌ ┐
  │ 3-λ -1   ││x│= │ 1  -1││x│  x - y = 0  →  │x│= k│1│ → Y = (x-y)/√2
  │-1    3-λ││y│  │-1   1││y│                   │y│   │1│
    └           ┘└ ┘  └      ┘└ ┘                   └ ┘   └ ┘
X = (x+y)/√2,  Y = (x-y)/√2 の置換をすれば、標準形 2X2 + 4Y2 になります。。

このとき、XとYのどちらにλの値を用いるかは決まった規則はありません。
X = (x-y)/√2,  Y = (x+y)/√2 とすると、標準形 4X2 + 2Y2 になります。

二次形式の直交軸

先に標準化とは二次形式のグラフを回転して、X軸・Y軸に対称にしました。
元の二次形式のグラフが対称になる軸を求めるのは簡単で、上の例では
  x + y = 0      y = -x
  x - y = 0      y = x
がそれにあたります。この2つの直交軸で対象になっています。

これと標準二次形式での長軸・短軸の長さを組み合わせれば、
 例えば、第1象限での長軸端点は、y = x の方向で長さ √4 の点 (√2, √2) 
というように、元の二次形式での端点が求められます。

2変数での変換公式

λ = λ0=4 のときのX
  ┌               ┐┌ ┐         ┌       ┐
  │ a000  a01   ││x│  →   k │a000│
  │ a01    a110││y│         │a01    │
    └               ┘└ ┘         └       ┘
   k = 1/√{(a000)2 + (a01)2}
   X = k((a000)x + a01y)
     ここで a00 = 3. a01 = -1, λ0 = 4 を代入すると
     a000 = -1
       k = 1/√{(-1)+(-1)} = 1/√2
     X = (-1x -1y)/√2

λ = λ1=2 のときのY
   k = 1/√{(a001)2 + (a01)2}
     = 1/√{12+(-1)} =  1/√2
   Y = k((a001)x + a01y)
    = (1x - 1y)/√2

従って、X = -(x+y)/√2, Y = (x-y)/√2 (x = -(X-Y)/√2, y = -(X-Y)/√2)
これを、3x2 - 2xy + 3y2 に代入すれば、2X2 + 4Y2 となる。
(λ0, λ1 と X, Y の対応を逆にすれば、4X2 + 2Y2 となる。

解説文と公式結果では、係数の正負が逆になっているが、二項形式では全項が2乗されるので同じ結果になります。
また正負が逆とはグラフでのベクトルの向きが反対になることであり、本質的なことではありません。

元の二次形式の対象軸は、
  (a000)x + a01y = 0      -1x -1y = 0      y = -x
  (a001)x + a01y = 0       1x -1y = 0      y =  x
で求められます。 

二次形式関数の極値

定値性

定値性とは、二次形式関数 F のとり得る範囲(正負)を示すものです。
Fの標準二次形式 S = PX2 + QY2 において X2≧0, Y2≧0 ですから
Fの正負はSの係数P、Qの正負、すなわち、固有値の正負により決まります。
  正定値  F>0  すべてのλ>0
  半正定値 F≧0      λ≧0
  負定値  F<0      λ<0
  半負定値 F≦0      λ≦0
  不定値  正負あり 正負あり

二次形式の微分

xT A x の微分は 2Ax になります。
二次形式関数をF(x,y) = 3x2 - 2xy + 3y2 とします。
 dy/dx = (∂F/∂x) / (∂F/∂y)
        = (6x - 2y) / (-2x + 6y ) 
                ┌       ┐┌ ┐      ┌       ┐┌ ┐
  行列表示では  │ 6  -2 ││x│ = 2*│ 3  -1 ││x│ = 2Ax
                │-2   6 ││y│      │-1   3 ││y│
                └       ┘└ ┘      └       ┘└ ┘
Fが極値をとるのは、dy/dx = 0 のときですから
    3x - 1y = 0   y = 3x
すなわち、この直線とFとの交点でyが極値になることがわかります。
(dx/dy = 0 からは y =(1/3)x が得られます。xの極値になります)

これにより、(x,y) の範囲を確定できます。

一般化すれば、
  dy/dx = 2(a00x + a01y)
 dx/dy = 2(a01x + a11y) 
となります。 

レイリー(Rayleigh)商

レイリー商 R は、次のように定義されます。
  R = (xT A x) / |x|2
 そして、次の公式が証明されています。
  Rmin = λmin,  Rmax = λmax
 これにより、最大値, 最小値をとるときの x, y に関する条件が求められます。

これまで用いてきた関数Fでは
  R = (3x2 - 2xy + 3y2) / (x2 + y2)
     ┌     ┐
  A = │ 3 -1│
     │-1  3│
         └     ┘
  λmin = 2, λmax = 4 → y = ±x
を代入すれば
  R = (6±2)x2 / 2x2 = 2, 4 になります。

すなわち、レイリー商は
  「x2 + y2 = c の制約で、Fの最大(小)値を求めよ」
というような問題に適しています。

数値解析へ