コンテンツにスキップ

行列のノルムと線形方程式の条件数:誘導ノルム・後退誤差・特異行列までの距離

対象読者: 学部の線形代数(行列の積・逆行列・固有値)と、特異値分解・固有値評価の基本を学んだ人。ε-δ 論法による極限は使えるものとし、数値計算の経験は仮定しません。

前提となる記事:行列の分解と標準形:ケイリー・ハミルトンから特異値分解・ウィリアムソンの標準形まで、行列の固有値評価と不等式:ゲルシュゴリンからペロン・フロベニウス、カントロヴィッチまで

生 Markdown

連立一次方程式をコンピュータで解くと、答えには必ず小さな誤差が混じります。同じ計算でも、うまく解ける問題と、ほんの少しの誤差で答えが大きくずれる問題があります。この記事では「ずれやすさ」を 1 つの数(条件数)で測り、計算した答えが何桁まで信用できるかを事前に見積もる方法を、定義と証明から組み立てます。読み終えると、行列の「大きさ」を測る物差し(ノルム)と、誤差の 2 種類の測り方(前進誤差と後退誤差)の関係を説明できるようになります。

  • Kn\mathbb{K}^n(K=R\mathbb{K}=\mathbb{R} または C\mathbb{C})のノルムはすべて同値です。これは単位球面のコンパクト性から出ます。行列の誘導ノルムは ∥A∥1\|A\|_1 が列和の最大、∥A∥∞\|A\|_\infty が行和の最大、∥A∥2\|A\|_2 が最大特異値です。
  • スペクトル半径(固有値の絶対値の最大)は任意の誘導ノルム以下で、逆に ε>0\varepsilon>0 ごとに ∥A∥≤ρ(A)+ε\|A\|\le\rho(A)+\varepsilon となる誘導ノルムがあります。帰結として Ak→0  ⟺  ρ(A)<1A^k\to0\iff\rho(A)<1 です。
  • κ(A)=∥A∥∥A−1∥\kappa(A)=\|A\|\|A^{-1}\| は線形方程式の相対的な感度の上限で、同時に「AA から特異行列までの相対距離の逆数」です(2 ノルムでは等式)。
  • 近似解 y\boldsymbol{y} の後退誤差(y\boldsymbol{y} を厳密解にするためのデータの最小の相対摂動。「問題をどれだけ動かせば、いま得た答えが正解になるか」という測り方)は残差から閉じた式で計算できます。ノルムで測れば Rigal–Gaches の式、成分ごとに測れば Oettli–Prager の式です。
  • 前進誤差 ≲\lesssim 条件数 ×\times 後退誤差。Hilbert 行列では後退誤差が 10−1710^{-17} 程度でも、前進誤差は κ2\kappa_2 に比例して n=13n=13 で 1 を超えます。
  • エルミート行列の固有値は ∥E∥2\|E\|_2 以上には動きません(条件数 1)。離散 Laplace 行列の条件数は閉じた形 cot⁡2(πh/2)\cot^2(\pi h/2) をもち、4/(π2h2)4/(\pi^2h^2) にほぼ等しいことを示します。

数値線形代数の結果を評価するとき、2 つの問いを分けて考えます。1 つは問題の感度、すなわちデータ (A,b)(A,\boldsymbol{b}) を少し動かしたとき解 x\boldsymbol{x} がどれだけ動くか、です。これは算法に関係なく問題そのものの性質で、条件数で測ります。もう 1 つは算法の安定性、すなわち計算した x^\widehat{\boldsymbol{x}} が「少し動かしたデータの厳密解」になっているか、です。これは後退誤差で測ります。後退誤差が単位丸め uu の程度に小さい算法を後退安定といいます。

この 2 つを掛け合わせると前進誤差の見積もり

∥x^−x∥∥x∥ ≲ κ(A)×(後退誤差)\frac{\|\widehat{\boldsymbol{x}}-\boldsymbol{x}\|}{\|\boldsymbol{x}\|}\ \lesssim\ \kappa(A)\times(\text{後退誤差})

が得られます。たとえば部分ピボット選択つきの Gauss 消去は(ほとんどの行列で)後退安定なので、κ(A)≈10k\kappa(A)\approx10^{k} なら倍精度の 16 桁のうちおよそ kk 桁を失う、と事前に読めます。失った桁は算法の欠陥ではなく問題の性質で、算法を替えても取り戻せません。

この記事では、その物差しを用意します。ノルムを決め、条件数を定義し、摂動定理と後退誤差の公式を証明します。以後の章(LU 分解、QR 分解、最小二乗、固有値計算、反復法)はすべてこの物差しで評価されます。スカラーの問題の条件数と後退安定性の一般論は数値解析のテーマで扱い、この記事はその行列版です。

K\mathbb{K} は R\mathbb{R} または C\mathbb{C} です。内積は ⟨x,y⟩=y∗x\langle\boldsymbol{x},\boldsymbol{y}\rangle=\boldsymbol{y}^{*}\boldsymbol{x}、行列の絶対値 ∣A∣|A| は成分ごとにとり、行列・ベクトルの不等号 ∣E∣≤F|E|\le F も成分ごとです。A∈Mm,n(K)A\in M_{m,n}(\mathbb{K}) の特異値を σ1≥σ2≥⋯\sigma_1\ge\sigma_2\ge\cdots と大きい順に書き、正則な A∈Mn(K)A\in M_n(\mathbb{K}) では σn>0\sigma_n>0 が最小の特異値です(特異値分解(定理 4.1)[行列の分解と標準形])。エルミート行列の固有値は λ1≥⋯≥λn\lambda_1\ge\cdots\ge\lambda_n と大きい順に並べます。

記号の注意. 線形代数のテーマでは「作用素ノルム」∥A∥\|A\| はユークリッドノルムから誘導されるもの(この記事の ∥A∥2\|A\|_2)を指しています。この記事では複数のノルムを扱うので、添字を付けて区別します。

3. ベクトルのノルムとその同値性

Section titled “3. ベクトルのノルムとその同値性”

定義 3.1(ノルムと p ノルム)↗

写像 ∥⋅∥ ⁣:Kn→[0,∞)\|\cdot\|\colon\mathbb{K}^n\to[0,\infty) が次の 3 条件を満たすときノルムという: (i) ∥x∥=0  ⟺  x=0\|\boldsymbol{x}\|=0\iff\boldsymbol{x}=\boldsymbol{0}、(ii) ∥αx∥=∣α∣∥x∥\|\alpha\boldsymbol{x}\|=|\alpha|\|\boldsymbol{x}\|(α∈K\alpha\in\mathbb{K})、(iii) ∥x+y∥≤∥x∥+∥y∥\|\boldsymbol{x}+\boldsymbol{y}\|\le\|\boldsymbol{x}\|+\|\boldsymbol{y}\|。1≤p<∞1\le p<\infty について ∥x∥p=(∑i∣xi∣p)1/p\|\boldsymbol{x}\|_p=\bigl(\sum_i|x_i|^p\bigr)^{1/p}、∥x∥∞=max⁡i∣xi∣\|\boldsymbol{x}\|_\infty=\max_i|x_i| を p ノルムという。2 つのノルム ∥⋅∥α,∥⋅∥β\|\cdot\|_\alpha,\|\cdot\|_\beta が同値であるとは、定数 0<c≤C0<c\le C があって全 x\boldsymbol{x} で c∥x∥α≤∥x∥β≤C∥x∥αc\|\boldsymbol{x}\|_\alpha\le\|\boldsymbol{x}\|_\beta\le C\|\boldsymbol{x}\|_\alpha となることをいう。

p=1,2,∞p=1,2,\infty がノルムであることは、三角不等式が p=1,∞p=1,\infty では成分ごとの三角不等式から、p=2p=2 では内積のノルムの三角不等式(Cauchy–Schwarz の不等式の帰結)から出ます。この記事で使うのはこの 3 つです。

補題 3.2(有限次元のノルムの同値性)✓

Kn\mathbb{K}^n 上の任意の 2 つのノルムは同値である。

証明(補題 3.2)

同値は推移的(c1∥⋅∥α≤∥⋅∥β≤C1∥⋅∥αc_1\|\cdot\|_\alpha\le\|\cdot\|_\beta\le C_1\|\cdot\|_\alpha と c2∥⋅∥β≤∥⋅∥γ≤C2∥⋅∥βc_2\|\cdot\|_\beta\le\|\cdot\|_\gamma\le C_2\|\cdot\|_\beta を合わせれば c1c2∥⋅∥α≤∥⋅∥γ≤C1C2∥⋅∥αc_1c_2\|\cdot\|_\alpha\le\|\cdot\|_\gamma\le C_1C_2\|\cdot\|_\alpha)なので、任意のノルム ∥⋅∥\|\cdot\| が ∥⋅∥2\|\cdot\|_2 と同値であることを示せば十分です。Cn\mathbb{C}^n は実部と虚部に分けて R2n\mathbb{R}^{2n} と同一視し、∥⋅∥2\|\cdot\|_2 はそのユークリッドノルムに一致します。以下 N=nN=n(実)または N=2nN=2n(複素)とします。

上からの評価. 標準基底 ei\boldsymbol{e}_i で x=∑ixiei\boldsymbol{x}=\sum_ix_i\boldsymbol{e}_i と書くと、(ii)(iii) と Cauchy–Schwarz の不等式(定理 4.2)[内積空間とグラム・シュミット直交化](Rn\mathbb{R}^n のベクトル (∣xi∣)i(|x_i|)_i と (∥ei∥)i(\|\boldsymbol{e}_i\|)_i に適用)から

∥x∥≤∑i=1n∣xi∣ ∥ei∥≤C∥x∥2,C=(∑i=1n∥ei∥2)1/2.\|\boldsymbol{x}\|\le\sum_{i=1}^n|x_i|\,\|\boldsymbol{e}_i\|\le C\|\boldsymbol{x}\|_2,\qquad C=\Bigl(\sum_{i=1}^n\|\boldsymbol{e}_i\|^2\Bigr)^{1/2}.

連続性. (iii) から ∣∥x∥−∥y∥∣≤∥x−y∥≤C∥x−y∥2\bigl|\|\boldsymbol{x}\|-\|\boldsymbol{y}\|\bigr|\le\|\boldsymbol{x}-\boldsymbol{y}\|\le C\|\boldsymbol{x}-\boldsymbol{y}\|_2 なので、f(x)=∥x∥f(\boldsymbol{x})=\|\boldsymbol{x}\| は RN\mathbb{R}^N のユークリッド位相で連続です。同じ理由で ∥⋅∥2\|\cdot\|_2 も連続です。

下からの評価. 単位球面 S={x:∥x∥2=1}S=\{\boldsymbol{x}:\|\boldsymbol{x}\|_2=1\} は、連続関数 ∥⋅∥2\|\cdot\|_2 による閉集合 {1}\{1\} の逆像なので閉集合で、S⊂B(0,2)S\subset B(0,2) なので有界です。Heine–Borel の定理(定理 5.2)[コンパクト性] により SS はコンパクトで、空でありません。連続関数 ff を SS に制限すると、最大値・最小値の定理(系 6.2)[コンパクト性] により最小値 c=f(xmin⁡)c=f(\boldsymbol{x}_{\min}) をとります。xmin⁡≠0\boldsymbol{x}_{\min}\ne\boldsymbol{0} なので (i) から c>0c>0 です。任意の x≠0\boldsymbol{x}\ne\boldsymbol{0} について x/∥x∥2∈S\boldsymbol{x}/\|\boldsymbol{x}\|_2\in S だから、(ii) により ∥x∥=∥x∥2 f(x/∥x∥2)≥c∥x∥2\|\boldsymbol{x}\|=\|\boldsymbol{x}\|_2\,f(\boldsymbol{x}/\|\boldsymbol{x}\|_2)\ge c\|\boldsymbol{x}\|_2 です。x=0\boldsymbol{x}=\boldsymbol{0} では両辺 0 です。

同値性は「収束するか」「有界か」がノルムの選び方によらないことを意味します。ただし定数は nn に依存し、数値計算ではこの定数が問題になります。よく使う 3 つの間の最良の定数を記録しておきます。

命題 3.3(1・2・∞ ノルムの間の定数)✓

x∈Kn\boldsymbol{x}\in\mathbb{K}^n について

∥x∥∞≤∥x∥2≤n ∥x∥∞,∥x∥2≤∥x∥1≤n ∥x∥2,∥x∥∞≤∥x∥1≤n∥x∥∞\|\boldsymbol{x}\|_\infty\le\|\boldsymbol{x}\|_2\le\sqrt n\,\|\boldsymbol{x}\|_\infty,\qquad \|\boldsymbol{x}\|_2\le\|\boldsymbol{x}\|_1\le\sqrt n\,\|\boldsymbol{x}\|_2,\qquad \|\boldsymbol{x}\|_\infty\le\|\boldsymbol{x}\|_1\le n\|\boldsymbol{x}\|_\infty

が成り立ち、各不等式で等号が成り立つ x≠0\boldsymbol{x}\ne\boldsymbol{0} がある。

証明(命題 3.3)

∣xk∣=∥x∥∞|x_k|=\|\boldsymbol{x}\|_\infty となる kk をとると ∥x∥∞2=∣xk∣2≤∑i∣xi∣2≤n∥x∥∞2\|\boldsymbol{x}\|_\infty^2=|x_k|^2\le\sum_i|x_i|^2\le n\|\boldsymbol{x}\|_\infty^2 で 1 組目が出ます。∥x∥12=∑i,j∣xi∣∣xj∣≥∑i∣xi∣2\|\boldsymbol{x}\|_1^2=\sum_{i,j}|x_i||x_j|\ge\sum_i|x_i|^2 で 2 組目の左が、Cauchy–Schwarz の不等式(定理 4.2)[内積空間とグラム・シュミット直交化] を (∣xi∣)i(|x_i|)_i と (1,…,1)(1,\ldots,1) に適用して ∥x∥1≤n∥x∥2\|\boldsymbol{x}\|_1\le\sqrt n\|\boldsymbol{x}\|_2 が出ます。3 組目は ∣xk∣≤∑i∣xi∣≤nmax⁡i∣xi∣|x_k|\le\sum_i|x_i|\le n\max_i|x_i| です。等号は、各組の左の不等式で x=e1\boldsymbol{x}=\boldsymbol{e}_1、右の不等式で x=(1,…,1)T\boldsymbol{x}=(1,\ldots,1)^{\mathsf{T}} のときに成り立ちます。

定義 4.1(誘導ノルム)↗

Kn\mathbb{K}^n と Km\mathbb{K}^m にノルムを 1 つずつ固定する(記号はどちらも ∥⋅∥\|\cdot\|)。A∈Mm,n(K)A\in M_{m,n}(\mathbb{K}) に対し

∥A∥=max⁡x≠0∥Ax∥∥x∥=max⁡∥x∥=1∥Ax∥\|A\|=\max_{\boldsymbol{x}\ne\boldsymbol{0}}\frac{\|A\boldsymbol{x}\|}{\|\boldsymbol{x}\|}=\max_{\|\boldsymbol{x}\|=1}\|A\boldsymbol{x}\|

を誘導ノルム(作用素ノルム)という。p ノルムから誘導したものを ∥A∥p\|A\|_p と書く。

最大値が存在することは次のとおりです。補題 3.2 の定数で ∥y∥≤C′∥y∥2\|\boldsymbol{y}\|\le C'\|\boldsymbol{y}\|_2(y∈Km\boldsymbol{y}\in\mathbb{K}^m)、c∥x∥2≤∥x∥c\|\boldsymbol{x}\|_2\le\|\boldsymbol{x}\|(x∈Kn\boldsymbol{x}\in\mathbb{K}^n)とし、各行に Cauchy–Schwarz の不等式を使うと ∥Ax∥2≤M∥x∥2\|A\boldsymbol{x}\|_2\le M\|\boldsymbol{x}\|_2(M=(∑i,j∣aij∣2)1/2M=(\sum_{i,j}|a_{ij}|^2)^{1/2})です。よって ∣∥Ax∥−∥Ay∥∣≤C′M∥x−y∥2\bigl|\|A\boldsymbol{x}\|-\|A\boldsymbol{y}\|\bigr|\le C'M\|\boldsymbol{x}-\boldsymbol{y}\|_2 で x↦∥Ax∥\boldsymbol{x}\mapsto\|A\boldsymbol{x}\| は連続です。集合 {∥x∥=1}\{\|\boldsymbol{x}\|=1\} は ∥x∥2≤1/c\|\boldsymbol{x}\|_2\le1/c で有界、連続関数 ∥⋅∥\|\cdot\| による {1}\{1\} の逆像なので閉で、Heine–Borel の定理(定理 5.2)[コンパクト性] によりコンパクトです。あとは 最大値・最小値の定理(系 6.2)[コンパクト性] を使います。定義からただちに、∥Ax∥≤∥A∥∥x∥\|A\boldsymbol{x}\|\le\|A\|\|\boldsymbol{x}\|、∥AB∥≤∥A∥∥B∥\|AB\|\le\|A\|\|B\|(∥ABx∥≤∥A∥∥Bx∥≤∥A∥∥B∥∥x∥\|AB\boldsymbol{x}\|\le\|A\|\|B\boldsymbol{x}\|\le\|A\|\|B\|\|\boldsymbol{x}\|)、∥I∥=1\|I\|=1 が成り立ち、∥⋅∥\|\cdot\| は Mm,n(K)M_{m,n}(\mathbb{K}) 上のノルムです。

命題 4.2(1・∞・2 ノルムの公式)✓

A=(aij)∈Mm,n(K)A=(a_{ij})\in M_{m,n}(\mathbb{K}) について

  1. ∥A∥1=max⁡j∑i∣aij∣\|A\|_1=\max_j\sum_i|a_{ij}|(列和の最大)。
  2. ∥A∥∞=max⁡i∑j∣aij∣\|A\|_\infty=\max_i\sum_j|a_{ij}|(行和の最大)。
  3. ∥A∥2=σ1\|A\|_2=\sigma_1(最大特異値)。とくに ∥A∗∥2=∥A∥2\|A^{*}\|_2=\|A\|_2。
証明(命題 4.2)

(1) ∥Ax∥1=∑i∣∑jaijxj∣≤∑j∣xj∣∑i∣aij∣≤(max⁡j∑i∣aij∣)∥x∥1\|A\boldsymbol{x}\|_1=\sum_i|\sum_ja_{ij}x_j|\le\sum_j|x_j|\sum_i|a_{ij}|\le\bigl(\max_j\sum_i|a_{ij}|\bigr)\|\boldsymbol{x}\|_1 です。列和が最大の列を j0j_0 とし x=ej0\boldsymbol{x}=\boldsymbol{e}_{j_0} をとると ∥Ax∥1=∑i∣aij0∣\|A\boldsymbol{x}\|_1=\sum_i|a_{ij_0}| で等号に達します。

(2) ∣(Ax)i∣≤∑j∣aij∣∣xj∣≤(∑j∣aij∣)∥x∥∞|(A\boldsymbol{x})_i|\le\sum_j|a_{ij}||x_j|\le\bigl(\sum_j|a_{ij}|\bigr)\|\boldsymbol{x}\|_\infty から ≤\le です。行和が最大の行を i0i_0 とし、xj=ai0j‾/∣ai0j∣x_j=\overline{a_{i_0j}}/|a_{i_0j}|(ai0j=0a_{i_0j}=0 なら xj=1x_j=1)とおくと ∥x∥∞=1\|\boldsymbol{x}\|_\infty=1(A≠0A\ne0 の場合。A=0A=0 なら両辺 0)で、(Ax)i0=∑j∣ai0j∣(A\boldsymbol{x})_{i_0}=\sum_j|a_{i_0j}| となり等号に達します。

(3) 作用素ノルムと最良低階数近似(命題 4.3)[行列の分解と標準形] の 1 がそのまま ∥A∥2=σ1\|A\|_2=\sigma_1 です。A=UΣV∗A=U\Sigma V^{*} なら A∗=VΣTU∗A^{*}=V\Sigma^{\mathsf{T}}U^{*} は A∗A^{*} の特異値分解で、0 でない特異値は同じなので ∥A∗∥2=σ1\|A^{*}\|_2=\sigma_1 です(A=0A=0 なら両辺 0)。

1 ノルムと ∞ ノルムは成分から O(mn)O(mn) の演算で計算できますが、2 ノルムは特異値分解が要ります。条件数の推定に κ1\kappa_1 や κ∞\kappa_\infty が使われるのはこのためです。

4.2. Frobenius ノルムとユニタリ不変性

Section titled “4.2. Frobenius ノルムとユニタリ不変性”

定義 4.3(Frobenius ノルム)↗

∥A∥F=(∑i,j∣aij∣2)1/2=(tr⁡A∗A)1/2\|A\|_F=\bigl(\sum_{i,j}|a_{ij}|^2\bigr)^{1/2}=\bigl(\operatorname{tr}A^{*}A\bigr)^{1/2} を A∈Mm,n(K)A\in M_{m,n}(\mathbb{K}) の Frobenius ノルムという。

Frobenius ノルムは AA を Kmn\mathbb{K}^{mn} のベクトルとみた 2 ノルムなのでノルムですが、どのベクトルノルムからも誘導されません(n≥2n\ge2 で ∥I∥F=n≠1\|I\|_F=\sqrt n\ne1)。

命題 4.4(ユニタリ不変性と Frobenius ノルム)✓

A∈Mm,n(K)A\in M_{m,n}(\mathbb{K})、rank⁡A=r\operatorname{rank}A=r とし、U∈Mm(K)U\in M_m(\mathbb{K})、V∈Mn(K)V\in M_n(\mathbb{K}) をユニタリ行列とする。

  1. ∥UAV∥2=∥A∥2\|UAV\|_2=\|A\|_2、∥UAV∥F=∥A∥F\|UAV\|_F=\|A\|_F。
  2. ∥A∥F2=σ12+⋯+σr2\|A\|_F^2=\sigma_1^2+\cdots+\sigma_r^2。
  3. ∥A∥2≤∥A∥F≤r ∥A∥2\|A\|_2\le\|A\|_F\le\sqrt r\,\|A\|_2。
証明(命題 4.4)

(1) ユニタリ行列の特徴づけ(命題 3.2)[スペクトル定理] の 3 から ∥Uy∥2=∥y∥2\|U\boldsymbol{y}\|_2=\|\boldsymbol{y}\|_2 です。よって ∥UAVx∥2=∥AVx∥2\|UAV\boldsymbol{x}\|_2=\|AV\boldsymbol{x}\|_2 で、x\boldsymbol{x} が単位球面を動くと VxV\boldsymbol{x} も単位球面全体を動く(VV は等長で全単射)ので、最大値は等しく ∥UAV∥2=∥A∥2\|UAV\|_2=\|A\|_2 です。Frobenius ノルムは ∥A∥F2=∑j∥aj∥22\|A\|_F^2=\sum_j\|\boldsymbol{a}_j\|_2^2(aj\boldsymbol{a}_j は列)なので ∥UA∥F=∥A∥F\|UA\|_F=\|A\|_F、また ∥A∥F=∥A∗∥F\|A\|_F=\|A^{*}\|_F なので ∥AV∥F=∥V∗A∗∥F=∥A∗∥F=∥A∥F\|AV\|_F=\|V^{*}A^{*}\|_F=\|A^{*}\|_F=\|A\|_F です。

(2) 特異値分解(定理 4.1)[行列の分解と標準形] A=UΣV∗A=U\Sigma V^{*} に (1) を使えば ∥A∥F=∥Σ∥F=(∑i≤rσi2)1/2\|A\|_F=\|\Sigma\|_F=(\sum_{i\le r}\sigma_i^2)^{1/2} です。

(3) (2) と ∥A∥2=σ1\|A\|_2=\sigma_1(命題 4.2)から σ12≤∑i≤rσi2≤rσ12\sigma_1^2\le\sum_{i\le r}\sigma_i^2\le r\sigma_1^2 です。

直交変換・ユニタリ変換は 2 ノルムで測った誤差を拡大しません。QR 分解や固有値計算の算法が直交変換を積み重ねて作られるのは、この性質のためです。

5. スペクトル半径と誘導ノルム

Section titled “5. スペクトル半径と誘導ノルム”

定義 5.1(スペクトル半径)↗

A∈Mn(C)A\in M_n(\mathbb{C}) の固有値の絶対値の最大 ρ(A)=max⁡{∣λ∣:λ は A の固有値}\rho(A)=\max\{|\lambda|:\lambda\text{ は }A\text{ の固有値}\} をスペクトル半径という。実行列は複素行列とみなす。

定理 5.2(スペクトル半径と誘導ノルム)✓

A∈Mn(C)A\in M_n(\mathbb{C}) とする。

  1. Cn\mathbb{C}^n の任意のノルムから誘導されるノルムについて ρ(A)≤∥A∥\rho(A)\le\|A\|。
  2. 任意の ε>0\varepsilon>0 に対し、Cn\mathbb{C}^n のあるノルム ∥⋅∥A,ε\|\cdot\|_{A,\varepsilon} が存在して、それから誘導されるノルムで ∥A∥A,ε≤ρ(A)+ε\|A\|_{A,\varepsilon}\le\rho(A)+\varepsilon。

(2) の証明の方針は次のとおりです。Schur 分解で AA を上三角行列 TT にすると、対角成分が固有値になります。邪魔なのは対角より右上の成分です。対角行列 DD で挟んだ D−1TDD^{-1}TD は、対角成分を変えずに、対角から j−ij-i だけ離れた成分に δj−i\delta^{j-i} を掛けます。δ\delta を小さくとれば右上の成分をいくらでも小さくでき、行和の最大が ρ(A)\rho(A) にいくらでも近づきます。

証明(定理 5.2)

(1) Ax=λxA\boldsymbol{x}=\lambda\boldsymbol{x}、x≠0\boldsymbol{x}\ne\boldsymbol{0} なら ∣λ∣∥x∥=∥Ax∥≤∥A∥∥x∥|\lambda|\|\boldsymbol{x}\|=\|A\boldsymbol{x}\|\le\|A\|\|\boldsymbol{x}\| で、∥x∥>0\|\boldsymbol{x}\|>0 で割ります。

(2) まず、正則な SS について ∥x∥S:=∥S−1x∥∞\|\boldsymbol{x}\|_S:=\|S^{-1}\boldsymbol{x}\|_\infty は Cn\mathbb{C}^n のノルムで((i)〜(iii) は ∥⋅∥∞\|\cdot\|_\infty から移る)、それから誘導されるノルムは

∥A∥S=max⁡x≠0∥S−1Ax∥∞∥S−1x∥∞=max⁡y≠0∥S−1ASy∥∞∥y∥∞=∥S−1AS∥∞\|A\|_S=\max_{\boldsymbol{x}\ne\boldsymbol{0}}\frac{\|S^{-1}A\boldsymbol{x}\|_\infty}{\|S^{-1}\boldsymbol{x}\|_\infty}=\max_{\boldsymbol{y}\ne\boldsymbol{0}}\frac{\|S^{-1}AS\boldsymbol{y}\|_\infty}{\|\boldsymbol{y}\|_\infty}=\|S^{-1}AS\|_\infty

です(y=S−1x\boldsymbol{y}=S^{-1}\boldsymbol{x} とおいた)。Schur 分解(定理 3.1)[行列の分解と標準形] で A=UTU∗A=UTU^{*}(UU はユニタリ、TT は上三角で対角成分は固有値)と書きます。τ=max⁡i∑j>i∣tij∣\tau=\max_i\sum_{j>i}|t_{ij}| とおき、0<δ≤10<\delta\le1 を δτ≤ε\delta\tau\le\varepsilon となるようにとり、D=diag⁡(1,δ,…,δn−1)D=\operatorname{diag}(1,\delta,\ldots,\delta^{n-1}) とします。D−1TDD^{-1}TD の (i,j)(i,j) 成分は δj−itij\delta^{j-i}t_{ij}(j≥ij\ge i)で、j=ij=i では固有値、j>ij>i では ∣δj−itij∣≤δ∣tij∣|\delta^{j-i}t_{ij}|\le\delta|t_{ij}| です。命題 4.2 の 2 より

∥D−1TD∥∞=max⁡i(∣tii∣+∑j>iδj−i∣tij∣)≤ρ(A)+δτ≤ρ(A)+ε\|D^{-1}TD\|_\infty=\max_i\Bigl(|t_{ii}|+\sum_{j>i}\delta^{j-i}|t_{ij}|\Bigr)\le\rho(A)+\delta\tau\le\rho(A)+\varepsilon

です。S=UDS=UD とおけば S−1AS=D−1U∗AUD=D−1TDS^{-1}AS=D^{-1}U^{*}AUD=D^{-1}TD なので、∥⋅∥A,ε:=∥⋅∥S\|\cdot\|_{A,\varepsilon}:=\|\cdot\|_S が求めるノルムです。

(2) のノルムは AA と ε\varepsilon に依存し、ρ(A)\rho(A) に近づけるほど通常のノルムとの同値定数 δ−(n−1)\delta^{-(n-1)} が大きくなります。ρ(⋅)\rho(\cdot) 自体はノルムではありません(ρ(0100)=0\rho\bigl(\begin{smallmatrix}0&1\\0&0\end{smallmatrix}\bigr)=0)。

系 5.3(行列の冪の収束)✓

A∈Mn(C)A\in M_n(\mathbb{C}) について、Ak→0A^k\to0(k→∞k\to\infty、成分ごと、あるいは同じことだが任意の行列ノルムで)  ⟺  ρ(A)<1\iff\rho(A)<1。さらに ρ(A)<1\rho(A)<1 なら、任意の誘導ノルムについて定数 c>0c>0 と θ<1\theta<1 があって ∥Ak∥≤c θk\|A^k\|\le c\,\theta^k。

証明(系 5.3)

行列のノルムは Mn(C)≅Cn2M_n(\mathbb{C})\cong\mathbb{C}^{n^2} 上のノルムなので、補題 3.2 により「成分ごとに収束」と「あるノルムで収束」と「任意のノルムで収束」は同値です。

(⇐\Leftarrow) ε=(1−ρ(A))/2\varepsilon=(1-\rho(A))/2 として 定理 5.2 の 2 のノルムをとると、θ:=∥A∥A,ε≤(1+ρ(A))/2<1\theta:=\|A\|_{A,\varepsilon}\le(1+\rho(A))/2<1 で、劣乗法性から ∥Ak∥A,ε≤θk→0\|A^k\|_{A,\varepsilon}\le\theta^k\to0 です。別の誘導ノルム ∥⋅∥\|\cdot\| とは 補題 3.2 の定数 CC で ∥Ak∥≤C∥Ak∥A,ε≤Cθk\|A^k\|\le C\|A^k\|_{A,\varepsilon}\le C\theta^k となります。

(⇒\Rightarrow) ∣λ∣≥1|\lambda|\ge1 の固有値 λ\lambda と固有ベクトル x≠0\boldsymbol{x}\ne\boldsymbol{0} があれば ∥Akx∥2=∣λ∣k∥x∥2≥∥x∥2\|A^k\boldsymbol{x}\|_2=|\lambda|^k\|\boldsymbol{x}\|_2\ge\|\boldsymbol{x}\|_2 なので、∥Ak∥2≥1\|A^k\|_2\ge1 が全 kk で成り立ち、Ak↛0A^k\not\to0 です。

注意 5.4

同じ減衰は 冪の減衰の補題(補題 7.3)[行列の固有値評価と不等式] としても証明されています。より精密には、Banach 環の一般論である スペクトル半径公式(定理 6.7)[有界作用素と共役作用素] を有限次元の Mn(C)M_n(\mathbb{C}) に当てはめると ρ(A)=lim⁡k∥Ak∥1/k\rho(A)=\lim_k\|A^k\|^{1/k} が任意の誘導ノルムで成り立ちます。定理 5.2 は、この極限を待たずに「1 回の積で ρ(A)+ε\rho(A)+\varepsilon 以下に縮む」ノルムを作れる、という有限次元に特有の主張です。定常反復法の収束(ρ(M−1N)<1\rho(M^{-1}N)<1)はこの系で判定します。

この節では Kn\mathbb{K}^n に 1 つのノルムを固定し、行列にはそれから誘導されるノルムを使います。

補題 6.1(逆行列の摂動)✓

A∈Mn(K)A\in M_n(\mathbb{K}) を正則、E∈Mn(K)E\in M_n(\mathbb{K}) とし、∥A−1E∥<1\|A^{-1}E\|<1 とする。このとき A+EA+E は正則で

∥(A+E)−1∥≤∥A−1∥1−∥A−1E∥,∥(A+E)−1−A−1∥≤∥A−1∥ ∥A−1E∥1−∥A−1E∥.\|(A+E)^{-1}\|\le\frac{\|A^{-1}\|}{1-\|A^{-1}E\|},\qquad \|(A+E)^{-1}-A^{-1}\|\le\frac{\|A^{-1}\|\,\|A^{-1}E\|}{1-\|A^{-1}E\|}.
証明(補題 6.1)

F=A−1EF=A^{-1}E とおくと ∥F∥<1\|F\|<1 です。(I+F)x=0(I+F)\boldsymbol{x}=\boldsymbol{0} なら ∥x∥=∥Fx∥≤∥F∥∥x∥\|\boldsymbol{x}\|=\|F\boldsymbol{x}\|\le\|F\|\|\boldsymbol{x}\| で、∥F∥<1\|F\|<1 から x=0\boldsymbol{x}=\boldsymbol{0} です。よって I+FI+F の核は {0}\{\boldsymbol{0}\} で、次元定理(定理 8.3)[行列と連立一次方程式] から階数 nn、すなわち正則です。y=(I+F)−1z\boldsymbol{y}=(I+F)^{-1}\boldsymbol{z} とおくと ∥z∥=∥y+Fy∥≥(1−∥F∥)∥y∥\|\boldsymbol{z}\|=\|\boldsymbol{y}+F\boldsymbol{y}\|\ge(1-\|F\|)\|\boldsymbol{y}\| なので ∥(I+F)−1∥≤1/(1−∥F∥)\|(I+F)^{-1}\|\le1/(1-\|F\|) です。

A+E=A(I+F)A+E=A(I+F) は正則行列の積なので正則で、(A+E)−1=(I+F)−1A−1(A+E)^{-1}=(I+F)^{-1}A^{-1} から第 1 式が出ます。また

(A+E)−1−A−1=(I+F)−1(I−(I+F))A−1=−(I+F)−1FA−1(A+E)^{-1}-A^{-1}=(I+F)^{-1}\bigl(I-(I+F)\bigr)A^{-1}=-(I+F)^{-1}FA^{-1}

のノルムをとると第 2 式です。

∥A−1E∥≤∥A−1∥∥E∥\|A^{-1}E\|\le\|A^{-1}\|\|E\| なので、∥E∥<1/∥A−1∥\|E\|<1/\|A^{-1}\| なら仮定は満たされます。Neumann 級数(定理 6.1)[有界作用素と共役作用素] を使えば (I+F)−1=∑k(−F)k(I+F)^{-1}=\sum_k(-F)^k という表示も得られますが、評価だけなら上の直接の議論で足ります。

定義 6.2(条件数)↗

正則な A∈Mn(K)A\in M_n(\mathbb{K}) について κ(A)=∥A∥ ∥A−1∥\kappa(A)=\|A\|\,\|A^{-1}\| を(そのノルムに関する)条件数という。pp ノルムのとき κp(A)\kappa_p(A) と書く。

1=∥I∥=∥AA−1∥≤κ(A)1=\|I\|=\|AA^{-1}\|\le\kappa(A) なので κ(A)≥1\kappa(A)\ge1 です。κ(αA)=κ(A)\kappa(\alpha A)=\kappa(A)(α≠0\alpha\ne0)で、条件数は行列の「大きさ」ではなく「歪み」を測ります。

定理 6.3(線形方程式の摂動定理)✓

A∈Mn(K)A\in M_n(\mathbb{K}) を正則、b≠0\boldsymbol{b}\ne\boldsymbol{0}、Ax=bA\boldsymbol{x}=\boldsymbol{b} とする。ΔA,Δb\Delta A,\Delta\boldsymbol{b} が ∥A−1∥∥ΔA∥<1\|A^{-1}\|\|\Delta A\|<1 を満たし、(A+ΔA)(x+Δx)=b+Δb(A+\Delta A)(\boldsymbol{x}+\Delta\boldsymbol{x})=\boldsymbol{b}+\Delta\boldsymbol{b} ならば

∥Δx∥∥x∥≤κ(A)1−κ(A)∥ΔA∥∥A∥(∥ΔA∥∥A∥+∥Δb∥∥b∥).\frac{\|\Delta\boldsymbol{x}\|}{\|\boldsymbol{x}\|}\le\frac{\kappa(A)}{1-\kappa(A)\dfrac{\|\Delta A\|}{\|A\|}}\left(\frac{\|\Delta A\|}{\|A\|}+\frac{\|\Delta\boldsymbol{b}\|}{\|\boldsymbol{b}\|}\right).

とくに ∥ΔA∥≤ε∥A∥\|\Delta A\|\le\varepsilon\|A\|、∥Δb∥≤ε∥b∥\|\Delta\boldsymbol{b}\|\le\varepsilon\|\boldsymbol{b}\|、εκ(A)<1\varepsilon\kappa(A)<1 なら ∥Δx∥/∥x∥≤2εκ(A)/(1−εκ(A))\|\Delta\boldsymbol{x}\|/\|\boldsymbol{x}\|\le2\varepsilon\kappa(A)/(1-\varepsilon\kappa(A))。

証明(定理 6.3)

∥A−1ΔA∥≤∥A−1∥∥ΔA∥<1\|A^{-1}\Delta A\|\le\|A^{-1}\|\|\Delta A\|<1 なので、補題 6.1 により A+ΔAA+\Delta A は正則で ∥(A+ΔA)−1∥≤∥A−1∥/(1−∥A−1∥∥ΔA∥)\|(A+\Delta A)^{-1}\|\le\|A^{-1}\|/(1-\|A^{-1}\|\|\Delta A\|) です。仮定の式から Ax=bA\boldsymbol{x}=\boldsymbol{b} を引くと (A+ΔA)Δx=Δb−ΔA x(A+\Delta A)\Delta\boldsymbol{x}=\Delta\boldsymbol{b}-\Delta A\,\boldsymbol{x}、すなわち Δx=(A+ΔA)−1(Δb−ΔA x)\Delta\boldsymbol{x}=(A+\Delta A)^{-1}(\Delta\boldsymbol{b}-\Delta A\,\boldsymbol{x}) で、

∥Δx∥≤∥A−1∥1−∥A−1∥∥ΔA∥(∥Δb∥+∥ΔA∥∥x∥)\|\Delta\boldsymbol{x}\|\le\frac{\|A^{-1}\|}{1-\|A^{-1}\|\|\Delta A\|}\bigl(\|\Delta\boldsymbol{b}\|+\|\Delta A\|\|\boldsymbol{x}\|\bigr)

です。b≠0\boldsymbol{b}\ne\boldsymbol{0} より x≠0\boldsymbol{x}\ne\boldsymbol{0} で、∥b∥≤∥A∥∥x∥\|\boldsymbol{b}\|\le\|A\|\|\boldsymbol{x}\| から ∥Δb∥≤∥A∥∥x∥⋅∥Δb∥/∥b∥\|\Delta\boldsymbol{b}\|\le\|A\|\|\boldsymbol{x}\|\cdot\|\Delta\boldsymbol{b}\|/\|\boldsymbol{b}\| です。これを代入して ∥x∥\|\boldsymbol{x}\| で割り、∥A−1∥∥ΔA∥=κ(A)∥ΔA∥/∥A∥\|A^{-1}\|\|\Delta A\|=\kappa(A)\|\Delta A\|/\|A\| と書けば主張です。後半は ∥ΔA∥/∥A∥≤ε\|\Delta A\|/\|A\|\le\varepsilon、∥Δb∥/∥b∥≤ε\|\Delta\boldsymbol{b}\|/\|\boldsymbol{b}\|\le\varepsilon を代入したものです。

ΔA=0\Delta A=0 の場合、この上界は等号で達成されます。∥Ax∥=∥A∥∥x∥\|A\boldsymbol{x}\|=\|A\|\|\boldsymbol{x}\| となる x\boldsymbol{x} を選んで b=Ax\boldsymbol{b}=A\boldsymbol{x} とし、∥A−1Δb∥=∥A−1∥∥Δb∥\|A^{-1}\Delta\boldsymbol{b}\|=\|A^{-1}\|\|\Delta\boldsymbol{b}\| となる向きの Δb\Delta\boldsymbol{b} をとると、∥Δx∥/∥x∥=∥A−1∥∥Δb∥⋅∥A∥/∥b∥=κ(A)∥Δb∥/∥b∥\|\Delta\boldsymbol{x}\|/\|\boldsymbol{x}\|=\|A^{-1}\|\|\Delta\boldsymbol{b}\|\cdot\|A\|/\|\boldsymbol{b}\|=\kappa(A)\|\Delta\boldsymbol{b}\|/\|\boldsymbol{b}\| です。つまり κ(A)\kappa(A) は相対誤差の拡大率の「最悪の場合」そのものです。

条件数にはもう 1 つの意味があります。κ(A)\kappa(A) が大きいとは、AA のすぐ近くに特異行列があることです。

定理 6.4(特異行列までの距離)✓

A∈Mn(K)A\in M_n(\mathbb{K}) を正則とし、Kn\mathbb{K}^n の任意のノルムとその誘導ノルムをとる。

min⁡{∥ΔA∥∥A∥:ΔA∈Mn(K), A+ΔA は特異}=1κ(A)\min\left\{\frac{\|\Delta A\|}{\|A\|}:\Delta A\in M_n(\mathbb{K}),\ A+\Delta A\text{ は特異}\right\}=\frac1{\kappa(A)}

であり、最小は階数 1 の ΔA\Delta A で達成される。2 ノルムでは κ2(A)=σ1/σn\kappa_2(A)=\sigma_1/\sigma_n で、最小値は σn/σ1\sigma_n/\sigma_1 である。

証明の方針は 2 段です。下界は直前の補題から出ます。AA に加える摂動が小さければ正則のままだからです。達成の部分では、特異にするために必要な最小の摂動を実際に作ります。ここで使う線形汎関数 ϕ\phi は、ベクトルから数を 1 つ取り出す線形な量で、選んだ w\boldsymbol{w} ではちょうどノルムの値 1 をとり、ほかのベクトルでは ∥v∥\|\boldsymbol{v}\| を超えないものです(2 ノルムなら w∗v\boldsymbol{w}^{*}\boldsymbol{v} がそれにあたります)。これを使うと「w\boldsymbol{w} を AwA\boldsymbol{w} だけずらして 0 に送る」階数 1 の摂動が書けます。

証明(定理 6.4)

下界. ∥ΔA∥<1/∥A−1∥\|\Delta A\|<1/\|A^{-1}\| なら 補題 6.1(∥A−1ΔA∥≤∥A−1∥∥ΔA∥<1\|A^{-1}\Delta A\|\le\|A^{-1}\|\|\Delta A\|<1)により A+ΔAA+\Delta A は正則です。対偶をとると、A+ΔAA+\Delta A が特異なら ∥ΔA∥≥1/∥A−1∥\|\Delta A\|\ge1/\|A^{-1}\|、すなわち ∥ΔA∥/∥A∥≥1/κ(A)\|\Delta A\|/\|A\|\ge1/\kappa(A) です。

達成. 誘導ノルムの定義の最大値をとる z\boldsymbol{z}(∥z∥=1\|\boldsymbol{z}\|=1、∥A−1z∥=∥A−1∥\|A^{-1}\boldsymbol{z}\|=\|A^{-1}\|)を選び、w=A−1z/∥A−1∥\boldsymbol{w}=A^{-1}\boldsymbol{z}/\|A^{-1}\| とおくと ∥w∥=1\|\boldsymbol{w}\|=1、Aw=z/∥A−1∥A\boldsymbol{w}=\boldsymbol{z}/\|A^{-1}\| です。ノルムを実現する汎関数(系 3.4)[Banach 空間の基本定理] をノルム空間 (Kn,∥⋅∥)(\mathbb{K}^n,\|\cdot\|) に適用し、線形汎関数 ϕ\phi で ϕ(w)=1\phi(\boldsymbol{w})=1、全 v\boldsymbol{v} で ∣ϕ(v)∣≤∥v∥|\phi(\boldsymbol{v})|\le\|\boldsymbol{v}\| となるものをとります。ΔA v:=−ϕ(v) Aw\Delta A\,\boldsymbol{v}:=-\phi(\boldsymbol{v})\,A\boldsymbol{w} と定めると ΔA\Delta A は階数 1 の行列で、(A+ΔA)w=Aw−Aw=0(A+\Delta A)\boldsymbol{w}=A\boldsymbol{w}-A\boldsymbol{w}=\boldsymbol{0} なので A+ΔAA+\Delta A は特異です。また ∥ΔA v∥=∣ϕ(v)∣ ∥Aw∥≤∥v∥/∥A−1∥\|\Delta A\,\boldsymbol{v}\|=|\phi(\boldsymbol{v})|\,\|A\boldsymbol{w}\|\le\|\boldsymbol{v}\|/\|A^{-1}\| で、v=w\boldsymbol{v}=\boldsymbol{w} で等号なので ∥ΔA∥=1/∥A−1∥\|\Delta A\|=1/\|A^{-1}\| です。

2 ノルム. 特異値分解(定理 4.1)[行列の分解と標準形] A=UΣV∗A=U\Sigma V^{*} で AA は正則なので階数 nn、σn>0\sigma_n>0 で、A−1=VΣ−1U∗A^{-1}=V\Sigma^{-1}U^{*} です。命題 4.4 の 1 から ∥A−1∥2=∥Σ−1∥2\|A^{-1}\|_2=\|\Sigma^{-1}\|_2 で、∥Σ−1x∥22=∑i∣xi∣2/σi2≤∥x∥22/σn2\|\Sigma^{-1}\boldsymbol{x}\|_2^2=\sum_i|x_i|^2/\sigma_i^2\le\|\boldsymbol{x}\|_2^2/\sigma_n^2(等号は x=en\boldsymbol{x}=\boldsymbol{e}_n)なので ∥A−1∥2=1/σn\|A^{-1}\|_2=1/\sigma_n です。∥A∥2=σ1\|A\|_2=\sigma_1(命題 4.2)と合わせて κ2(A)=σ1/σn\kappa_2(A)=\sigma_1/\sigma_n です。

2 ノルムの場合、最小の摂動は ΔA=−σnunvn∗\Delta A=-\sigma_n\boldsymbol{u}_n\boldsymbol{v}_n^{*} で、これは Eckart–Young の定理(命題 4.3)[行列の分解と標準形] の k=n−1k=n-1 の場合(階数 n−1n-1 以下の行列への距離は σn\sigma_n)と同じことを言っています。「κ(A)≈1016\kappa(A)\approx10^{16} の行列は、倍精度の丸め 1 回分の相対摂動で特異になりうる」と読めるので、そのような行列の解に意味のある桁は期待できません。

定義 7.1(ノルムに関する後退誤差)↗

正則な A∈Mn(K)A\in M_n(\mathbb{K})、b∈Kn\boldsymbol{b}\in\mathbb{K}^n と近似解 y\boldsymbol{y} について

η(y)=min⁡{ε≥0:(A+ΔA)y=b+Δb, ∥ΔA∥≤ε∥A∥, ∥Δb∥≤ε∥b∥}\eta(\boldsymbol{y})=\min\bigl\{\varepsilon\ge0:(A+\Delta A)\boldsymbol{y}=\boldsymbol{b}+\Delta\boldsymbol{b},\ \|\Delta A\|\le\varepsilon\|A\|,\ \|\Delta\boldsymbol{b}\|\le\varepsilon\|\boldsymbol{b}\|\bigr\}

を y\boldsymbol{y} の(ノルムに関する)後退誤差という。残差を r=b−Ay\boldsymbol{r}=\boldsymbol{b}-A\boldsymbol{y} と書く。

定理 7.2(Rigal–Gaches の公式)✓

y≠0\boldsymbol{y}\ne\boldsymbol{0} ならば、上の最小値は存在して

η(y)=∥r∥∥A∥ ∥y∥+∥b∥.\eta(\boldsymbol{y})=\frac{\|\boldsymbol{r}\|}{\|A\|\,\|\boldsymbol{y}\|+\|\boldsymbol{b}\|}.

証明の方針は次のとおりです。残差 r\boldsymbol{r} は「AA の側の摂動」と「b\boldsymbol{b} の側の摂動」で打ち消すしかありません。そこで r\boldsymbol{r} を割合 α\alpha と 1−α1-\alpha に分けて両者に負担させます。α\alpha は、AA と b\boldsymbol{b} それぞれの相対的な摂動の大きさがちょうど等しくなるように選んであります。

証明(定理 7.2)

右辺を η∗\eta_* とおきます(AA は正則なので A≠0A\ne0、分母は正)。

下界. (A+ΔA)y=b+Δb(A+\Delta A)\boldsymbol{y}=\boldsymbol{b}+\Delta\boldsymbol{b} を書き直すと r=ΔA y−Δb\boldsymbol{r}=\Delta A\,\boldsymbol{y}-\Delta\boldsymbol{b} です。∥ΔA∥≤ε∥A∥\|\Delta A\|\le\varepsilon\|A\|、∥Δb∥≤ε∥b∥\|\Delta\boldsymbol{b}\|\le\varepsilon\|\boldsymbol{b}\| なら ∥r∥≤ε(∥A∥∥y∥+∥b∥)\|\boldsymbol{r}\|\le\varepsilon(\|A\|\|\boldsymbol{y}\|+\|\boldsymbol{b}\|)、すなわち ε≥η∗\varepsilon\ge\eta_* です。

達成. ノルムを実現する汎関数(系 3.4)[Banach 空間の基本定理] で、線形汎関数 ϕ\phi を ϕ(y)=∥y∥\phi(\boldsymbol{y})=\|\boldsymbol{y}\|、∣ϕ(v)∣≤∥v∥|\phi(\boldsymbol{v})|\le\|\boldsymbol{v}\| となるようにとります。α=∥A∥∥y∥/(∥A∥∥y∥+∥b∥)∈(0,1]\alpha=\|A\|\|\boldsymbol{y}\|/(\|A\|\|\boldsymbol{y}\|+\|\boldsymbol{b}\|)\in(0,1] とし

ΔA v=α ϕ(v)∥y∥ r,Δb=−(1−α) r\Delta A\,\boldsymbol{v}=\frac{\alpha\,\phi(\boldsymbol{v})}{\|\boldsymbol{y}\|}\,\boldsymbol{r},\qquad\Delta\boldsymbol{b}=-(1-\alpha)\,\boldsymbol{r}

と定めます。ΔA y−Δb=αr+(1−α)r=r\Delta A\,\boldsymbol{y}-\Delta\boldsymbol{b}=\alpha\boldsymbol{r}+(1-\alpha)\boldsymbol{r}=\boldsymbol{r} なので (A+ΔA)y=b+Δb(A+\Delta A)\boldsymbol{y}=\boldsymbol{b}+\Delta\boldsymbol{b} です。∥ΔAv∥≤α∥r∥∥v∥/∥y∥\|\Delta A\boldsymbol{v}\|\le\alpha\|\boldsymbol{r}\|\|\boldsymbol{v}\|/\|\boldsymbol{y}\| から ∥ΔA∥≤α∥r∥/∥y∥=η∗∥A∥\|\Delta A\|\le\alpha\|\boldsymbol{r}\|/\|\boldsymbol{y}\|=\eta_*\|A\|、また ∥Δb∥=(1−α)∥r∥=η∗∥b∥\|\Delta\boldsymbol{b}\|=(1-\alpha)\|\boldsymbol{r}\|=\eta_*\|\boldsymbol{b}\| です。よって ε=η∗\varepsilon=\eta_* は許される値で、下界と合わせて最小値は η∗\eta_* です。

2 ノルムでは ϕ(v)=y∗v/∥y∥2\phi(\boldsymbol{v})=\boldsymbol{y}^{*}\boldsymbol{v}/\|\boldsymbol{y}\|_2 とでき、ΔA\Delta A は ry∗\boldsymbol{r}\boldsymbol{y}^{*} の定数倍という具体的な階数 1 の行列になります。後退誤差は残差から計算できるのが要点です。前進誤差は真の解を知らないと計算できませんが、後退誤差は計算した y\boldsymbol{y} だけで評価でき、それに条件数を掛ければ前進誤差の上界になります。

系 7.3(前進誤差 ≤ 条件数 × 後退誤差)✓

AA を正則、b≠0\boldsymbol{b}\ne\boldsymbol{0}、Ax=bA\boldsymbol{x}=\boldsymbol{b}、y≠0\boldsymbol{y}\ne\boldsymbol{0} とし、η=η(y)\eta=\eta(\boldsymbol{y}) が η κ(A)<1\eta\,\kappa(A)<1 を満たすとする。このとき

∥y−x∥∥x∥≤2 κ(A) η1−κ(A) η.\frac{\|\boldsymbol{y}-\boldsymbol{x}\|}{\|\boldsymbol{x}\|}\le\frac{2\,\kappa(A)\,\eta}{1-\kappa(A)\,\eta}.
証明(系 7.3)

定理 7.2 により、∥ΔA∥≤η∥A∥\|\Delta A\|\le\eta\|A\|、∥Δb∥≤η∥b∥\|\Delta\boldsymbol{b}\|\le\eta\|\boldsymbol{b}\| で (A+ΔA)y=b+Δb(A+\Delta A)\boldsymbol{y}=\boldsymbol{b}+\Delta\boldsymbol{b} となる ΔA,Δb\Delta A,\Delta\boldsymbol{b} があります。∥A−1∥∥ΔA∥≤ηκ(A)<1\|A^{-1}\|\|\Delta A\|\le\eta\kappa(A)<1 なので、定理 6.3 の後半を ε=η\varepsilon=\eta、Δx=y−x\Delta\boldsymbol{x}=\boldsymbol{y}-\boldsymbol{x} で使えば主張です。

例 7.4(Hilbert 行列:後退誤差は小さく、前進誤差は κ に比例する)

Hilbert 行列 Hn=(1/(i+j−1))i,jH_n=(1/(i+j-1))_{i,j} を浮動小数に丸め、右辺を b=Hn(1,…,1)T\boldsymbol{b}=H_n(1,\ldots,1)^{\mathsf{T}}(浮動小数の積)として numpy.linalg.solve(部分ピボット選択つき LU)で解きます。丸めた (Hn,b)(H_n,\boldsymbol{b}) の厳密解は mpmath の 50 桁で求めて参照解とし、2 ノルムの前進誤差と Rigal–Gaches の後退誤差 η\eta を並べます。

# Python 3.12.10 / NumPy 2.5.2 / SciPy 1.18.1 / mpmath 1.3.0
import numpy as np
import mpmath as mp
from scipy.linalg import hilbert, invhilbert
mp.mp.dps = 50
n2 = lambda M: np.linalg.norm(M, 2)
print(" n kappa2 forward backward fwd/(k*bwd)")
for n in range(4, 14):
H = hilbert(n) # 浮動小数に丸めた H_n
b = H @ np.ones(n) # 右辺(浮動小数)
x = np.linalg.solve(H, b)
# 丸めた (H, b) の厳密解を 50 桁で求める
Hm, bm = mp.matrix(H.tolist()), mp.matrix(b.tolist())
xr = mp.lu_solve(Hm, bm)
xr = np.array([float(v) for v in xr])
r = bm - Hm * mp.matrix(x.tolist()) # 残差も 50 桁
r = np.array([float(v) for v in r])
Hinv = np.array(mp.inverse(Hm).tolist(), dtype=float)
kap = n2(H) * n2(Hinv) # 丸めた H の kappa_2
fwd = n2(x - xr) / n2(xr)
bwd = n2(r) / (n2(H) * n2(x) + n2(b)) # Rigal-Gaches
print(f"{n:2d} {kap:.2e} {fwd:.2e} {bwd:.2e} "
f"{fwd/(kap*bwd):.2e}")
kex = [n2(hilbert(n)) * n2(invhilbert(n, exact=True).astype(float))
for n in (4, 8, 12)]
print("exact H_n, n=4,8,12:", " ".join(f"{k:.2e}" for k in kex))
n kappa2 forward backward fwd/(k*bwd)
4 1.55e+04 7.34e-14 8.67e-18 5.46e-01
5 4.77e+05 1.84e-13 2.52e-17 1.53e-02
6 1.50e+07 6.19e-11 5.54e-17 7.47e-02
7 4.75e+08 2.02e-09 4.09e-17 1.04e-01
8 1.53e+10 2.12e-09 7.27e-17 1.91e-03
9 4.93e+11 9.17e-07 1.73e-17 1.07e-01
10 1.60e+13 5.76e-05 6.86e-17 5.24e-02
11 5.22e+14 4.40e-04 2.50e-17 3.37e-02
12 1.68e+16 7.76e-03 5.00e-17 9.23e-03
13 2.17e+18 1.28e+01 1.07e-17 5.54e-01
exact H_n, n=4,8,12: 1.55e+04 1.53e+10 1.71e+16

後退誤差はどの nn でも単位丸め u≈1.1×10−16u\approx1.1\times10^{-16} 以下で、算法は後退安定に振る舞っています。前進誤差は κ2\kappa_2 とともにおよそ e3.5ne^{3.5n} の勢いで増え、n=13n=13 では 1 を超えて有効な桁が残りません。最後の列は 系 7.3 の比で、κ2η<1\kappa_2\eta<1 の n≤12n\le12 では上界 2/(1−κ2η)2/(1-\kappa_2\eta) 以下です。n=13n=13 では κ2η≈23\kappa_2\eta\approx23 で系の仮定が崩れ、前進誤差について何も保証されません。

検算. (a) 既知値: 厳密な逆行列 invhilbert(exact=True)(整数行列)から計算した κ2(Hn)\kappa_2(H_n) は、丸めた行列の値と n=4,8n=4,8 で表示桁まで一致し、n=12n=12 では 2% ずれます。丸めによる HnH_n の相対摂動 uu に κ2≈1016\kappa_2\approx10^{16} を掛けると O(1)O(1) になるので、このずれ自体が 定理 6.4 の言う「特異に近い」状況を示しています。(b) 別精度: 参照解・残差・逆行列は mpmath の 50 桁で計算しました。(c) 次数: 前進誤差 / (κ2η\kappa_2\eta) が nn によらず 10−310^{-3}〜11 の範囲に収まり、前進誤差が κ2\kappa_2 に比例して増えることを示しています。

7.2. 成分ごとの後退誤差と Skeel の条件数

Section titled “7.2. 成分ごとの後退誤差と Skeel の条件数”

ノルムの後退誤差は ΔA\Delta A の成分の大きさの釣り合いを無視します。AA の小さい成分(たとえば 0)に大きな摂動を許すのは不自然なので、成分ごとに測る物差しも用意します。

定義 7.5(成分ごとの後退誤差)↗

E∈Mn(R)E\in M_n(\mathbb{R})、f∈Rn\boldsymbol{f}\in\mathbb{R}^n を成分が非負の「許容の形」とする。近似解 y\boldsymbol{y} について

ωE,f(y)=inf⁡{ε≥0:(A+ΔA)y=b+Δb, ∣ΔA∣≤εE, ∣Δb∣≤εf}\omega_{E,\boldsymbol{f}}(\boldsymbol{y})=\inf\bigl\{\varepsilon\ge0:(A+\Delta A)\boldsymbol{y}=\boldsymbol{b}+\Delta\boldsymbol{b},\ |\Delta A|\le\varepsilon E,\ |\Delta\boldsymbol{b}|\le\varepsilon\boldsymbol{f}\bigr\}

(条件を満たす ε\varepsilon が無ければ +∞+\infty)を成分ごとの後退誤差という。E=∣A∣E=|A|、f=∣b∣\boldsymbol{f}=|\boldsymbol{b}| が標準的な選び方である。

定理 7.6(Oettli–Prager の公式)✓

r=b−Ay\boldsymbol{r}=\boldsymbol{b}-A\boldsymbol{y}、g=E∣y∣+f\boldsymbol{g}=E|\boldsymbol{y}|+\boldsymbol{f} とする。ある ii で gi=0g_i=0 かつ ri≠0r_i\ne0 なら ωE,f(y)=+∞\omega_{E,\boldsymbol{f}}(\boldsymbol{y})=+\infty。そうでなければ下限は最小値で

ωE,f(y)=max⁡i∣ri∣gi(0/0=0 と約束する).\omega_{E,\boldsymbol{f}}(\boldsymbol{y})=\max_i\frac{|r_i|}{g_i}\qquad(0/0=0\text{ と約束する}).

式の読み方は次のとおりです。∣ri∣/gi|r_i|/g_i は ii 番目の方程式が許された幅(gig_i)に対して残差をどれだけ使っているかの割合で、全方程式のうち最も厳しいものが後退誤差を決めます。gi=0g_i=0 かつ ri=0r_i=0 の方程式は動かす余地がなく、同時に動かす必要もないので、制約なしとして 0/0=00/0=0 と約束します。

証明(定理 7.6)

下界. 条件を満たす ΔA,Δb\Delta A,\Delta\boldsymbol{b} があれば r=ΔA y−Δb\boldsymbol{r}=\Delta A\,\boldsymbol{y}-\Delta\boldsymbol{b} で、成分ごとに ∣ri∣≤∑j∣Δaij∣∣yj∣+∣Δbi∣≤εgi|r_i|\le\sum_j|\Delta a_{ij}||y_j|+|\Delta b_i|\le\varepsilon g_i です。gi=0g_i=0、ri≠0r_i\ne0 ならこれは成り立たないので +∞+\infty、そうでなければ ε≥∣ri∣/gi\varepsilon\ge|r_i|/g_i(全 ii)です。

達成. θi=ri/gi\theta_i=r_i/g_i(gi=0g_i=0 なら ri=0r_i=0 なので θi=0\theta_i=0)、sj=yj‾/∣yj∣s_j=\overline{y_j}/|y_j|(yj=0y_j=0 なら sj=0s_j=0)とおき、Δaij=θieijsj\Delta a_{ij}=\theta_ie_{ij}s_j、Δbi=−θifi\Delta b_i=-\theta_if_i と定めます。sjyj=∣yj∣s_jy_j=|y_j| なので

(ΔA y−Δb)i=θi(∑jeij∣yj∣+fi)=θigi=ri(\Delta A\,\boldsymbol{y}-\Delta\boldsymbol{b})_i=\theta_i\Bigl(\sum_je_{ij}|y_j|+f_i\Bigr)=\theta_ig_i=r_i

で、(A+ΔA)y=b+Δb(A+\Delta A)\boldsymbol{y}=\boldsymbol{b}+\Delta\boldsymbol{b} です。∣Δaij∣≤∣θi∣eij|\Delta a_{ij}|\le|\theta_i|e_{ij}、∣Δbi∣=∣θi∣fi|\Delta b_i|=|\theta_i|f_i なので ε=max⁡i∣θi∣\varepsilon=\max_i|\theta_i| が許されます。

成分ごとの後退誤差が uu の程度なら、計算した解は「各成分を相対 uu 程度動かしたデータ」の厳密解で、データ自体が測定や丸めで相対 uu の誤差を含むなら、それ以上の精度は求めようがありません。これに対応する条件数が Skeel の条件数です。

定義 7.7(Skeel の条件数)↗

正則な AA と x≠0\boldsymbol{x}\ne\boldsymbol{0} について

cond⁡(A,x)=∥∣A−1∣∣A∣∣x∣∥∞∥x∥∞,cond⁡(A)=∥∣A−1∣∣A∣∥∞\operatorname{cond}(A,\boldsymbol{x})=\frac{\bigl\||A^{-1}||A||\boldsymbol{x}|\bigr\|_\infty}{\|\boldsymbol{x}\|_\infty},\qquad\operatorname{cond}(A)=\bigl\||A^{-1}||A|\bigr\|_\infty

を Skeel の条件数という。

命題 7.8(成分ごとの摂動の評価)✓

AA を正則、Ax=bA\boldsymbol{x}=\boldsymbol{b}、x≠0\boldsymbol{x}\ne\boldsymbol{0} とする。

  1. (A+ΔA)(x+Δx)=b+Δb(A+\Delta A)(\boldsymbol{x}+\Delta\boldsymbol{x})=\boldsymbol{b}+\Delta\boldsymbol{b}、∣ΔA∣≤ε∣A∣|\Delta A|\le\varepsilon|A|、∣Δb∣≤ε∣b∣|\Delta\boldsymbol{b}|\le\varepsilon|\boldsymbol{b}|、εcond⁡(A)<1\varepsilon\operatorname{cond}(A)<1 ならば ∥Δx∥∞/∥x∥∞≤2εcond⁡(A,x)/(1−εcond⁡(A))\|\Delta\boldsymbol{x}\|_\infty/\|\boldsymbol{x}\|_\infty\le2\varepsilon\operatorname{cond}(A,\boldsymbol{x})/(1-\varepsilon\operatorname{cond}(A))。
  2. 正則な対角行列 DD について cond⁡(DA)=cond⁡(A)\operatorname{cond}(DA)=\operatorname{cond}(A)、cond⁡(DA,x)=cond⁡(A,x)\operatorname{cond}(DA,\boldsymbol{x})=\operatorname{cond}(A,\boldsymbol{x})。
  3. cond⁡(A,x)≤cond⁡(A)≤κ∞(A)\operatorname{cond}(A,\boldsymbol{x})\le\operatorname{cond}(A)\le\kappa_\infty(A)。
証明(命題 7.8)

成分が非負のベクトル 0≤p≤q\boldsymbol{0}\le\boldsymbol{p}\le\boldsymbol{q} では ∥p∥∞≤∥q∥∞\|\boldsymbol{p}\|_\infty\le\|\boldsymbol{q}\|_\infty、成分が非負の行列 MM では ∥Mp∥∞≤∥M∥∞∥p∥∞\|M\boldsymbol{p}\|_\infty\le\|M\|_\infty\|\boldsymbol{p}\|_\infty であることを使います。また ∥ ∣M∣ ∥∞=∥M∥∞\|\,|M|\,\|_\infty=\|M\|_\infty です(命題 4.2 の 2 の行和の式は成分の絶対値しか見ない)。

(1) 仮定の式から Ax=bA\boldsymbol{x}=\boldsymbol{b} を引くと AΔx=Δb−ΔA(x+Δx)A\Delta\boldsymbol{x}=\Delta\boldsymbol{b}-\Delta A(\boldsymbol{x}+\Delta\boldsymbol{x}) です。A−1A^{-1} を掛けて絶対値をとり、∣b∣=∣Ax∣≤∣A∣∣x∣|\boldsymbol{b}|=|A\boldsymbol{x}|\le|A||\boldsymbol{x}| を使うと

∣Δx∣≤ε∣A−1∣(∣b∣+∣A∣∣x∣+∣A∣∣Δx∣)≤2ε∣A−1∣∣A∣∣x∣+ε∣A−1∣∣A∣∣Δx∣|\Delta\boldsymbol{x}|\le\varepsilon|A^{-1}|\bigl(|\boldsymbol{b}|+|A||\boldsymbol{x}|+|A||\Delta\boldsymbol{x}|\bigr)\le2\varepsilon|A^{-1}||A||\boldsymbol{x}|+\varepsilon|A^{-1}||A||\Delta\boldsymbol{x}|

です。∞ ノルムをとると ∥Δx∥∞≤2εcond⁡(A,x)∥x∥∞+εcond⁡(A)∥Δx∥∞\|\Delta\boldsymbol{x}\|_\infty\le2\varepsilon\operatorname{cond}(A,\boldsymbol{x})\|\boldsymbol{x}\|_\infty+\varepsilon\operatorname{cond}(A)\|\Delta\boldsymbol{x}\|_\infty で、移項して割れば主張です。

(2) ∣(DA)−1∣∣DA∣=∣A−1D−1∣∣DA∣=∣A−1∣∣D−1∣∣D∣∣A∣=∣A−1∣∣A∣|(DA)^{-1}||DA|=|A^{-1}D^{-1}||DA|=|A^{-1}||D^{-1}||D||A|=|A^{-1}||A| です(対角行列を掛けることは行または列を定数倍することなので、絶対値と交換する)。

(3) 左の不等式は ∥∣A−1∣∣A∣∣x∣∥∞≤∥∣A−1∣∣A∣∥∞∥x∥∞\||A^{-1}||A||\boldsymbol{x}|\|_\infty\le\||A^{-1}||A|\|_\infty\|\boldsymbol{x}\|_\infty、右は ∥∣A−1∣∣A∣∥∞≤∥∣A−1∣∥∞∥∣A∣∥∞=∥A−1∥∞∥A∥∞\||A^{-1}||A|\|_\infty\le\||A^{-1}|\|_\infty\||A|\|_\infty=\|A^{-1}\|_\infty\|A\|_\infty です。

例 7.9(行のスケーリングで κ∞ は変わり、Skeel の条件数は変わらない)

B=(2111)B=\begin{pmatrix}2&1\\1&1\end{pmatrix}、B−1=(1−1−12)B^{-1}=\begin{pmatrix}1&-1\\-1&2\end{pmatrix} とします。κ∞(B)=3⋅3=9\kappa_\infty(B)=3\cdot3=9、∣B−1∣∣B∣=(3243)|B^{-1}||B|=\begin{pmatrix}3&2\\4&3\end{pmatrix} なので cond⁡(B)=7\operatorname{cond}(B)=7 です。第 2 行を t>0t>0 倍した At=diag⁡(1,t)BA_t=\operatorname{diag}(1,t)B では At−1=(1−1/t−12/t)A_t^{-1}=\begin{pmatrix}1&-1/t\\-1&2/t\end{pmatrix} で、0<t≤10<t\le1 のとき ∥At∥∞=3\|A_t\|_\infty=3、∥At−1∥∞=1+2/t\|A_t^{-1}\|_\infty=1+2/t、κ∞(At)=3+6/t\kappa_\infty(A_t)=3+6/t です。t=10−8t=10^{-8} なら κ∞≈6×108\kappa_\infty\approx6\times10^8 ですが、命題 7.8 の 2 により cond⁡(At)=7\operatorname{cond}(A_t)=7 のままです。方程式の両辺に同じ数を掛けても解の感度は変わらないので、成分ごとに測る限りこの「悪条件」は見かけのものです。

8. 固有値の感度とモデル行列の条件数

Section titled “8. 固有値の感度とモデル行列の条件数”

8.1. エルミート行列の固有値は条件数 1

Section titled “8.1. エルミート行列の固有値は条件数 1”

系 8.1(エルミート行列の固有値の摂動)✓

A,E∈Mn(C)A,E\in M_n(\mathbb{C}) をエルミート行列とし、固有値を大きい順に λ1(⋅)≥⋯≥λn(⋅)\lambda_1(\cdot)\ge\cdots\ge\lambda_n(\cdot) と並べる。このとき全 ii で

∣λi(A+E)−λi(A)∣≤∥E∥2.|\lambda_i(A+E)-\lambda_i(A)|\le\|E\|_2.
証明(系 8.1)

Weyl の固有値不等式(定理 3.2)[行列の固有値評価と不等式] の 3 を B=EB=E として使います。そこでの ∥E∥\|E\| はユークリッドノルムから誘導される作用素ノルム、すなわち ∥E∥2\|E\|_2 です。

後退安定な算法で固有値を計算し、結果が A+EA+E(∥E∥2≤cnu∥A∥2\|E\|_2\le cnu\|A\|_2)の厳密な固有値だと分かれば、絶対誤差は cnu∥A∥2cnu\|A\|_2 以下です。固有値の絶対誤差が摂動のノルムを超えないので、エルミート行列の固有値問題は(絶対誤差について)条件数 1 です。ただし ∥A∥2\|A\|_2 に比べて小さい固有値の相対誤差は大きくなりえます。

注意 8.2

非正規行列ではこれが成り立ちません。対角化可能な A=VΛV−1A=V\Lambda V^{-1} では Bauer–Fike の定理(定理 6.2)[行列計算の認証と最適化の証明書] により固有値の動きは κ2(V)∥E∥2\kappa_2(V)\|E\|_2 以下ですが、κ2(V)\kappa_2(V) は大きくなりえ、対角化できない行列ではさらに悪くなります。たとえば Jε=(01ε0)J_\varepsilon=\begin{pmatrix}0&1\\\varepsilon&0\end{pmatrix} の固有値は ±ε\pm\sqrt\varepsilon で、ε=10−16\varepsilon=10^{-16} の摂動が固有値を 10−810^{-8} 動かします。nn 次の Jordan 細胞の左下に ε\varepsilon を置くと、固有値は ε1/n\varepsilon^{1/n} の大きさまで動きます。この現象は固有値計算と GMRES の章で再び現れます。

8.2. 三重対角 Toeplitz 行列と離散 Laplace 行列

Section titled “8.2. 三重対角 Toeplitz 行列と離散 Laplace 行列”

偏微分方程式の離散化で最も基本的な行列は、固有値と固有ベクトルが閉じた形で書けます。後の章(定常反復法、共役勾配法)の収束率の計算はこの補題に基づきます。

補題 8.3(三重対角 Toeplitz 行列の固有値)✓

n≥1n\ge1、α,β∈R\alpha,\beta\in\mathbb{R} とし、T∈Mn(R)T\in M_n(\mathbb{R}) を対角成分が α\alpha、すぐ上とすぐ下の副対角成分が β\beta、他が 0 の行列とする。θk=kπ/(n+1)\theta_k=k\pi/(n+1)(k=1,…,nk=1,\ldots,n)とおくと、

Tvk=(α+2βcos⁡θk)vk,vk=(sin⁡(jθk))j=1n≠0T\boldsymbol{v}_k=(\alpha+2\beta\cos\theta_k)\boldsymbol{v}_k,\qquad\boldsymbol{v}_k=\bigl(\sin(j\theta_k)\bigr)_{j=1}^n\ne\boldsymbol{0}

であり、β≠0\beta\ne0 のとき α+2βcos⁡θk\alpha+2\beta\cos\theta_k(k=1,…,nk=1,\ldots,n)は相異なり、TT の固有値のすべてである。

証明(補題 8.3)

sj=sin⁡(jθk)s_j=\sin(j\theta_k) とおくと s0=0s_0=0、sn+1=sin⁡(kπ)=0s_{n+1}=\sin(k\pi)=0 です。この約束のもとで (Tvk)j=βsj−1+αsj+βsj+1(T\boldsymbol{v}_k)_j=\beta s_{j-1}+\alpha s_j+\beta s_{j+1} が j=1j=1 と j=nj=n でも成り立ちます。加法定理から sin⁡((j−1)θ)+sin⁡((j+1)θ)=2sin⁡(jθ)cos⁡θ\sin((j-1)\theta)+\sin((j+1)\theta)=2\sin(j\theta)\cos\theta なので (Tvk)j=(α+2βcos⁡θk)sj(T\boldsymbol{v}_k)_j=(\alpha+2\beta\cos\theta_k)s_j です。0<θk<π0<\theta_k<\pi から s1=sin⁡θk≠0s_1=\sin\theta_k\ne0 で、vk≠0\boldsymbol{v}_k\ne\boldsymbol{0} です。cos⁡\cos は (0,π)(0,\pi) で狭義単調減少なので cos⁡θ1>⋯>cos⁡θn\cos\theta_1>\cdots>\cos\theta_n で、β≠0\beta\ne0 なら nn 個の固有値は相異なります。nn 次の行列の固有値は重複度を込めて nn 個なので、これで全部です。

系 8.4(離散 Laplace 行列の条件数)✓

n≥2n\ge2、h=1/(n+1)h=1/(n+1) とし、Lh=h−2TL_h=h^{-2}T(TT は α=2\alpha=2、β=−1\beta=-1 の三重対角 Toeplitz 行列)とする。LhL_h の固有値は λk=4h−2sin⁡2(kπh/2)\lambda_k=4h^{-2}\sin^2(k\pi h/2)(k=1,…,nk=1,\ldots,n)で、

κ2(Lh)=cot⁡2πh2,4π2h2−1≤κ2(Lh)≤4π2h2.\kappa_2(L_h)=\cot^2\frac{\pi h}{2},\qquad\frac4{\pi^2h^2}-1\le\kappa_2(L_h)\le\frac4{\pi^2h^2}.
証明(系 8.4)

補題 8.3 から固有値は h−2(2−2cos⁡(kπh))=4h−2sin⁡2(kπh/2)h^{-2}(2-2\cos(k\pi h))=4h^{-2}\sin^2(k\pi h/2) で、0<kπh/2<π/20<k\pi h/2<\pi/2 では sin⁡\sin が正で増加なので 0<λ1<⋯<λn0<\lambda_1<\cdots<\lambda_n です。LhL_h は実対称なので スペクトル定理(定理 4.2)[スペクトル定理] で Lh=UΛU∗L_h=U\Lambda U^{*}(UU はユニタリ)と書け、Lh−1=UΛ−1U∗L_h^{-1}=U\Lambda^{-1}U^{*} です。命題 4.4 の 1 により ∥Lh∥2=∥Λ∥2\|L_h\|_2=\|\Lambda\|_2、∥Lh−1∥2=∥Λ−1∥2\|L_h^{-1}\|_2=\|\Lambda^{-1}\|_2 で、対角行列では ∥Λx∥22=∑kλk2∣xk∣2\|\Lambda\boldsymbol{x}\|_2^2=\sum_k\lambda_k^2|x_k|^2 から ∥Λ∥2=λn\|\Lambda\|_2=\lambda_n、∥Λ−1∥2=1/λ1\|\Lambda^{-1}\|_2=1/\lambda_1 です。よって

κ2(Lh)=λnλ1=sin⁡2(nπh/2)sin⁡2(πh/2)=cos⁡2(πh/2)sin⁡2(πh/2)\kappa_2(L_h)=\frac{\lambda_n}{\lambda_1}=\frac{\sin^2(n\pi h/2)}{\sin^2(\pi h/2)}=\frac{\cos^2(\pi h/2)}{\sin^2(\pi h/2)}

です(nπh/2=π/2−πh/2n\pi h/2=\pi/2-\pi h/2)。x=πh/2∈(0,π/2)x=\pi h/2\in(0,\pi/2) について、平均値の定理(定理 3.3)[平均値の定理とテイラーの定理] を [0,x][0,x] 上の tan⁡\tan と sin⁡\sin に使うと、ある c,c′∈(0,x)c,c'\in(0,x) で tan⁡x=x/cos⁡2c≥x\tan x=x/\cos^2c\ge x、sin⁡x=xcos⁡c′≤x\sin x=x\cos c'\le x です。前者から cot⁡2x≤1/x2\cot^2x\le1/x^2、後者から cot⁡2x=1/sin⁡2x−1≥1/x2−1\cot^2x=1/\sin^2x-1\ge1/x^2-1 で、1/x2=4/(π2h2)1/x^2=4/(\pi^2h^2) です。

格子を細かくすると条件数は h−2h^{-2} で増えます。2 次元・3 次元の離散 Laplace 行列も同じ h−2h^{-2} の増え方をし、これが反復法の反復回数の増え方(定常反復法で h−2h^{-2}、共役勾配法で h−1h^{-1})の源です。

例 8.5(離散 Laplace 行列の条件数を数値で確かめる)

LhL_h の 2 ノルムの条件数を numpy.linalg.cond(特異値分解による)で計算し、閉じた形 cot⁡2(πh/2)\cot^2(\pi h/2)(mpmath の 30 桁)と 4/(πh)24/(\pi h)^2 を並べます。

# Python 3.12.10 / NumPy 2.5.2 / SciPy 1.18.1 / mpmath 1.3.0
import numpy as np
import mpmath as mp
mp.mp.dps = 30
print(" n cond (SVD) cot^2(pi h/2) 4/(pi h)^2 rel.diff")
for n in (10, 20, 40, 80, 160, 320):
h = 1.0 / (n + 1)
L = (2 * np.eye(n) - np.eye(n, k=1) - np.eye(n, k=-1)) / h**2
k_num = np.linalg.cond(L, 2)
k_cf = mp.cot(mp.pi * h / 2) ** 2 # 閉じた形(30 桁)
k_as = 4 / (np.pi * h) ** 2
rel = abs(k_num - float(k_cf)) / float(k_cf)
print(f"{n:4d} {k_num:.6e} {float(k_cf):.6e} {k_as:.6e}"
f" {rel:.1e}")
# 固有値そのものも閉じた形と照合(n = 20)
n = 20; h = 1.0 / (n + 1)
L = (2 * np.eye(n) - np.eye(n, k=1) - np.eye(n, k=-1)) / h**2
lam = np.linalg.eigvalsh(L)
k = np.arange(1, n + 1)
cf = 4 * np.sin(k * np.pi * h / 2) ** 2 / h**2
print("max |lam - closed| / lam_max =",
f"{np.max(np.abs(lam - cf)) / cf[-1]:.1e}")
n cond (SVD) cot^2(pi h/2) 4/(pi h)^2 rel.diff
10 4.837415e+01 4.837415e+01 4.903945e+01 1.0e-15
20 1.780643e+02 1.780643e+02 1.787306e+02 1.1e-15
40 6.806171e+02 6.806171e+02 6.812836e+02 3.4e-14
80 2.658407e+03 2.658407e+03 2.659073e+03 1.4e-13
160 1.050472e+04 1.050472e+04 1.050539e+04 1.7e-13
320 4.176028e+04 4.176028e+04 4.176094e+04 2.7e-13
max |lam - closed| / lam_max = 3.9e-16

検算. (a) 既知値: 特異値分解による条件数は閉じた形と相対 10−1310^{-13} 以下で一致し、n=20n=20 の固有値も閉じた形と λmax⁡\lambda_{\max} の相対 4×10−164\times10^{-16} で一致します。(b) 別精度: 閉じた形の値は mpmath の 30 桁で計算しました。(c) 次数: nn を 2 倍にするごとに条件数はほぼ 4 倍になり(h−2h^{-2})、4/(πh)24/(\pi h)^2 との差は n=10n=10 の 0.66530.6653 から 2/3≈0.66672/3\approx0.6667 に近づき、ほとんど変わりません。これは cot⁡2x=x−2−2/3+O(x2)\cot^2x=x^{-2}-2/3+O(x^2) という展開と合い、系 8.4 の幅 1 の評価の内側にあります。「rel.diff」が nn とともに増えるのは、特異値分解で求めた最小特異値の相対誤差が、系 8.1 と同じ理屈で最大 κ2u\kappa_2u 程度まで大きくなりうるためです。

演習 9.1易

A=(1234)A=\begin{pmatrix}1&2\\3&4\end{pmatrix} について κ1(A)\kappa_1(A)、κ∞(A)\kappa_\infty(A)、κ2(A)\kappa_2(A) を求めよ。また、2 ノルムで測って AA に最も近い特異行列までの距離を求めよ。

解答

det⁡A=−2\det A=-2、A−1=(−213/2−1/2)A^{-1}=\begin{pmatrix}-2&1\\3/2&-1/2\end{pmatrix} です。命題 4.2 から ∥A∥1=6\|A\|_1=6(第 2 列)、∥A−1∥1=7/2\|A^{-1}\|_1=7/2(第 1 列)で κ1=21\kappa_1=21、∥A∥∞=7\|A\|_\infty=7、∥A−1∥∞=3\|A^{-1}\|_\infty=3 で κ∞=21\kappa_\infty=21 です。ATA=(10141420)A^{\mathsf{T}}A=\begin{pmatrix}10&14\\14&20\end{pmatrix} の固有値は 15±22115\pm\sqrt{221} なので σ1=15+221≈5.465\sigma_1=\sqrt{15+\sqrt{221}}\approx5.465、σ1σ2=∣det⁡A∣=2\sigma_1\sigma_2=|\det A|=2 から σ2=2/σ1≈0.366\sigma_2=2/\sigma_1\approx0.366 です。κ2=σ1/σ2=σ12/2=(15+221)/2≈14.93\kappa_2=\sigma_1/\sigma_2=\sigma_1^2/2=(15+\sqrt{221})/2\approx14.93。定理 6.4 により最も近い特異行列までの 2 ノルムの距離は σ2≈0.366\sigma_2\approx0.366 です。

演習 9.2標準

右辺 b\boldsymbol{b} は正確で、AA だけに摂動を許す後退誤差 ηA(y)=min⁡{ε:(A+ΔA)y=b, ∥ΔA∥2≤ε∥A∥2}\eta_A(\boldsymbol{y})=\min\{\varepsilon:(A+\Delta A)\boldsymbol{y}=\boldsymbol{b},\ \|\Delta A\|_2\le\varepsilon\|A\|_2\} が、y≠0\boldsymbol{y}\ne\boldsymbol{0} のとき ∥r∥2/(∥A∥2∥y∥2)\|\boldsymbol{r}\|_2/(\|A\|_2\|\boldsymbol{y}\|_2) に等しいことを示し、最小を達成する ΔA\Delta A を具体的に書け。

解答

下界: (A+ΔA)y=b(A+\Delta A)\boldsymbol{y}=\boldsymbol{b} なら r=ΔA y\boldsymbol{r}=\Delta A\,\boldsymbol{y} で ∥r∥2≤∥ΔA∥2∥y∥2≤ε∥A∥2∥y∥2\|\boldsymbol{r}\|_2\le\|\Delta A\|_2\|\boldsymbol{y}\|_2\le\varepsilon\|A\|_2\|\boldsymbol{y}\|_2。達成: ΔA=ry∗/∥y∥22\Delta A=\boldsymbol{r}\boldsymbol{y}^{*}/\|\boldsymbol{y}\|_2^2 とおくと ΔA y=r\Delta A\,\boldsymbol{y}=\boldsymbol{r} で、Cauchy–Schwarz の不等式から ∥ΔAv∥2=∣y∗v∣∥r∥2/∥y∥22≤∥r∥2∥v∥2/∥y∥2\|\Delta A\boldsymbol{v}\|_2=|\boldsymbol{y}^{*}\boldsymbol{v}|\|\boldsymbol{r}\|_2/\|\boldsymbol{y}\|_2^2\le\|\boldsymbol{r}\|_2\|\boldsymbol{v}\|_2/\|\boldsymbol{y}\|_2(等号は v=y\boldsymbol{v}=\boldsymbol{y})、よって ∥ΔA∥2=∥r∥2/∥y∥2\|\Delta A\|_2=\|\boldsymbol{r}\|_2/\|\boldsymbol{y}\|_2 です。定理 7.2 の証明で α=1\alpha=1 とした場合にあたります。

演習 9.3標準

(1) ρ(A+B)≤ρ(A)+ρ(B)\rho(A+B)\le\rho(A)+\rho(B) が成り立たない 2×22\times2 行列の例を挙げ、ρ\rho が Mn(C)M_n(\mathbb{C}) 上のノルムでないことを確かめよ。(2) AA が正規行列なら ∥A∥2=ρ(A)\|A\|_2=\rho(A) であることを示せ。

解答

(1) A=(0100)A=\begin{pmatrix}0&1\\0&0\end{pmatrix}、B=(0010)B=\begin{pmatrix}0&0\\1&0\end{pmatrix} では ρ(A)=ρ(B)=0\rho(A)=\rho(B)=0 ですが、A+BA+B の固有値は ±1\pm1 で ρ(A+B)=1\rho(A+B)=1 です。また A≠0A\ne0 で ρ(A)=0\rho(A)=0 なので、ノルムの公理 (i) も破れます。

(2) 正規行列のスペクトル定理(定理 8.1)[スペクトル定理] により A=UDU∗A=UDU^{*}(UU はユニタリ、DD は固有値を並べた対角行列)です。命題 4.4 の 1 から ∥A∥2=∥D∥2\|A\|_2=\|D\|_2 で、∥Dx∥22=∑k∣dk∣2∣xk∣2≤(max⁡k∣dk∣)2∥x∥22\|D\boldsymbol{x}\|_2^2=\sum_k|d_k|^2|x_k|^2\le(\max_k|d_k|)^2\|\boldsymbol{x}\|_2^2、等号は最大の ∣dk∣|d_k| の位置の ek\boldsymbol{e}_k で成り立つので ∥D∥2=max⁡k∣dk∣=ρ(A)\|D\|_2=\max_k|d_k|=\rho(A) です。非正規の (1) の AA では ∥A∥2=1>0=ρ(A)\|A\|_2=1>0=\rho(A) で、定理 5.2 の 1 の不等号は真に狭くなりえます。

  • N. J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd ed., SIAM, 2002 — Ch. 6(ノルム)、Ch. 7(線形方程式の摂動論、Rigal–Gaches・Oettli–Prager・Skeel の条件数)。
  • G. H. Golub and C. F. Van Loan, Matrix Computations, 4th ed., Johns Hopkins University Press, 2013 — Ch. 2(行列のノルムと線形方程式の感度)。
  • L. N. Trefethen and D. Bau III, Numerical Linear Algebra, SIAM, 1997 — Lectures 3, 12–15(ノルム、条件数、安定性)。
  • R. A. Horn and C. R. Johnson, Matrix Analysis, 2nd ed., Cambridge University Press, 2013 — Ch. 5(ベクトルと行列のノルム、スペクトル半径)。
  • J. L. Rigal and J. Gaches, “On the compatibility of a given solution with the data of a linear system”, J. ACM 14 (1967), 543–548.
  • W. Oettli and W. Prager, “Compatibility of approximate solution of linear equations with given error bounds for coefficients and right-hand sides”, Numer. Math. 6 (1964), 405–409.

このテーマの 100 本ノック(100 問)

執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。