理系大学生のブログ

学んだことを書いていく

有限次元ノルム空間の線形作用素は連続

表題の命題「有限次元ノルム空間の間の線形作用素は連続である」について,示し方をメモする.

命題

 X,Yをノルム||\cdot||_{X},||\cdot||_{Y},次元m,nをもつ有限次元ノルム空間とする. 任意の線形作用素L:X\to Yは連続である.

命題の証明

有限次元ノルム空間上の任意のノルムは互いに同値である.(黒田『関数解析補題1.38など.) Xの任意の基底v_1,\ldots ,v_mを使って,X上のノルム|||\cdot|||_X

\displaystyle{
\begin{aligned}
|||v|||_X=|||\sum_{i=1}^m a^i v_i |||_X:=\sup_{i=1,\ldots ,m} |a^i|
\end{aligned}
}

と定義できるので,(ノルム||\cdot||_{X}に関する)ベクトル列(v_k)_{k=0}^\inftyの収束と,v_kの基底による展開の係数 ( a_k^i )_{k=0}^\infty の収束は同値に書き換えることができる. また,有限次元間の線形作用素であることから,写像で移した後のベクトルの係数は移す前の係数の行列積になる. 行列積は\mathbb{R}^m\to\mathbb{R}^nとして連続であることも使えば,命題は示される.

メモ

有限次元なら基底展開で行列積とみなせることに加えて,ノルムの同値性から収束性を基底展開係数の意味に書き直すことが必要になるようだ. (前者の事実だけから示そうとしてしばしば悩む.難しそうである.)

作用素有界であることを示すやり方もあるようだが,そこでもノルムの同値性はどうやら必要そうである.

math.stackexchange.com

数値解析入門(山本)読書メモ

山本哲朗,数値解析入門[増訂版],サイエンス社の読書メモ.随時更新. 詰まった行間を埋めるなど.

式番号などは教科書のそれを参照している.

p.124, Th. 8.1(Newtonの補間公式) proofの後半

「以下,このような操作を続けて」の具体的手続き.

i=0,1,\ldots,kまでc_i=f[x_i,\ldots,x_0]が成立していると仮定したうえで, 式(8.6)にx=x_{k+1}を代入すると,

\displaystyle{
\begin{aligned}
f[x_{k+1}] &= \sum_{i=0}^k f[x_i,\ldots,x_0] \prod_{j=0}^{i-1} (x_{k+1}-x_j) + c_{k+1} \prod_{j=0}^k (x_{k+1}-x_j)\\
f[x_{k+1}] - f[x_0] &=  \sum_{i=1}^k f[x_i,\ldots,x_0] \prod_{j=0}^{i-1} (x_{k+1}-x_j) + c_{k+1} \prod_{j=0}^k (x_{k+1}-x_j)\\
(x_{k+1}-x_0)f[x_{k+1},x_0] &=\\
f[x_{k+1},x_0] &= \sum_{i=1}^k f[x_i,\ldots,x_0] \prod_{j=1}^{i-1} (x_{k+1}-x_j) + c_{k+1} \prod_{j=1}^k (x_{k+1}-x_j)
\end{aligned}
}

(3行目は差分商の定義から.4行目はx_iが相異なるという仮定に注意.)「このような操作」は繰り返せる.つまり,

\displaystyle{
\begin{aligned}
f[x_{k+1},x_l,\ldots,x_0] &= \sum_{i=l+1}^k f[x_i,\ldots,x_0] \prod_{j=l+1}^{i-1} (x_{k+1}-x_j) + c_{k+1} \prod_{j=l+1}^k (x_{k+1}-x_j)
\end{aligned}
}

があるl\in\{0,\ldots,k-1\}に対し成り立っているとすると,

\displaystyle{
\begin{aligned}
f[x_{k+1},x_l,\ldots,x_0] - f[x_{l+1},x_l,\ldots,x_0] &= \sum_{i=l+2}^k f[x_i,\ldots,x_0] \prod_{j=l+1}^{i-1} (x_{k+1}-x_j) + c_{k+1} \prod_{j=l+1}^k (x_{k+1}-x_j)\\
(x_{k+1}-x_{l+1})f[x_{k+1},x_{l+1},x_l,\ldots,x_0]&=\\
f[x_{k+1},x_{l+1},x_l,\ldots,x_0]&=\sum_{i=l+2}^k f[x_i,\ldots,x_0] \prod_{j=l+2}^{i-1} (x_{k+1}-x_j) + c_{k+1} \prod_{j=l+2}^k (x_{k+1}-x_j)
\end{aligned}
}

と同様の関係がl+1に対し成り立つ.(l=k-1のとき総和・総積記号の添え字範囲が存在しなくなるが,慣習同様それぞれ0,1として取り扱えば問題ない.)特にl=kのときの上の関係の成立が言えて,

\displaystyle{
\begin{aligned}
f[x_{k+1},x_k,\ldots,x_0] &= \sum_{i=k+1}^k f[x_i,\ldots,x_0] \prod_{j=k+1}^{i-1} (x_{k+1}-x_j) + c_{k+1} \prod_{j=k+1}^k (x_{k+1}-x_j)\\
&=c_{k+1}
\end{aligned}
}

(差分商に関するメモ: 命題8.1より差分商は入力変数の順序によらないので,f[x_n,\ldots,x_0]の入力変数はベクトル(x_n,\ldots,x_0)というより むしろn+1点集合\{x_n,\ldots,x_0\}であるととらえた方がわかりやすい.差分商の定義式は,ある点集合における差分商の値と, その集合からそれぞれ異なる1点を取り除いた2集合における差分商の値とを関係づける.)

p.125, Cor. 8.1.2

後退差分についても前進差分(式(8.7))と同様の公式が成立.つまり

\displaystyle{
\begin{aligned}
f[x_{n-m},\ldots,x_n]=\frac{\nabla^m f(x_n)}{m!h^m} \quad (1\leq m \leq n)
\end{aligned}
}

差分商の定義から帰納法で容易に示せる.

p.127, Th. 8.2(補間多項式の誤差表示)proofの後半

「一般性を失うことなく,x_0 \lt x_1 \lt \cdots \lt x_n\lt xと仮定」とあり, xが最大でないとき\{x_i\}の添え字の付け替えで対応できないように思えるが, ここでは単に続く説明の便利のために\{x,x_0,\ldots,x_n\}の添え字が大きさ順になるようにしているだけで, 一般性は失っていない.

p.132, Th. 8.3(Hermite補間の差分商表示) proofの後半

式(8.19)右辺内のf[x_0,x_0,\ldots,x_n,x_n,x]は一般化された差分商(8.13)であり,f\in C^{2n+2}のときに定義されるが, Th. 8.3ではC^{2n+1}級しか課していない.Th. 8.4proof内で使うためにここで記述したのだろうが,修正が必要と思われる. (後で修正案書きたい.)

多変数合成関数の微分(連鎖律)の正しい理解

ある2変数関数f:(s,t)\mapsto f(s,t)の変数として、別の関数g:(x,y)\mapsto g(x,y)=(g_1(x,y),g_2(x,y))の値g(x,y)をとった 合成関数の微分\frac{\partial f\circ g}{\partial x}を展開した式は、よく以下のように略記される。

\displaystyle{\begin{eqnarray}
\left(\frac{\partial f\circ g}{\partial x}=\right)
\frac{\partial f}{\partial x}=\frac{\partial f}{\partial g_1}\frac{\partial g_1}{\partial x}+\frac{\partial f}{\partial g_2}\frac{\partial g_2}{\partial x}
\end{eqnarray}}

しかしあくまでこれは略記法であって、記号法として正確さを欠いた部分がいくつかある。

1つ目に、合成関数の微分\frac{\partial f\circ g}{\partial x}を合成する前の関数の微分\frac{\partial f}{\partial x}として表記している。

2つ目に、微分の記号(ライプニッツ記法)の分母の\partialの横に来るものは、分子の\partialの横に来る関数(微分される関数) の独立変数であるべきであり*1\frac{\partial f}{\partial g_1}はこのルールに反している。

略記法の形で連鎖律を覚えていると、いざ具体的な計算をする段になってこのあいまいさで混乱することがある。 例えば、\frac{\partial f}{\partial g_1}の部分を求めるには具体的に何を計算すべきなのか、などで迷うことがある。 この記事では、多変数合成関数の微分(連鎖律)のできるだけ正確な表現に立ち返ることにより連鎖律の正確な理解を得ることを目指す。

連鎖律の正確な表現

冒頭の例を一般化する。関数ff:(y_1,...,y_n)\mapsto f(y_1,...,y_n)とし、 関数gg:(x_1,...,x_m)\mapsto g(x_1,...,x_m)=(g_1(x_1,...,x_m),...,g_n(x_1,...,x_m))としたとき、合成関数f\circ gの変数x_iについての 微分

\displaystyle{\begin{eqnarray}
\frac{\partial f\circ g}{\partial x_i}=\sum_{j=1}^{n}\left(\frac{\partial f}{\partial y_j}\circ g\right)\cdot\frac{\partial g_j}{\partial x_i}
\end{eqnarray}}

この等式は合成関数の全微分の間に行列積の関係があることから導出することができる*2。 この等式は値としての一致ではなく、関数としての一致を表している。黒い点は関数の点ごとの積を表す*3\frac{\partial f}{\partial y_j}\circ ggから合成した合成関数の形になっているのは必然である。もし単にfy_j微分だったら、 左辺はm変数関数の微分なので入力の型はm変数だが、右辺にn個の変数を入力としてとる部分ができてしまう。

略記法の解釈

冒頭で挙げた略記法の不正確さの1つ目について、今扱っている関数が独立な変数のみからなる関数なのか、それともある別の関数を引数に とった合成関数なのかを文脈から判断することで解決可能と思われる。ある関数の独立変数を表す文字を決めておき、微分の分母にその文字がきたら 普通の微分、そうでなければ分母に現れた文字を独立変数にとる関数を合成した合成関数の微分であると解釈する。ただ例えば、ff:(x,y)\mapsto f(x,y)g(s,t)\mapsto g(s,t)=(h(s,t),t)などという形になっているとき、f\circ gの変数tについての微分は略記法では

\displaystyle{\begin{eqnarray}
\frac{\partial f}{\partial t}&=&\frac{\partial f}{\partial h}\frac{\partial h}{\partial t}+\frac{\partial f}{\partial t}\frac{\partial t}{\partial t}\\
&=&\frac{\partial f}{\partial h}\frac{\partial h}{\partial t}+\frac{\partial f}{\partial t}
\end{eqnarray}}

となり、同じ記号\frac{\partial f}{\partial t}で表されるものが両辺をみると食い違っているように見える。このような混乱を避けるには 略記法をあきらめて正確な表現に努めるしかないだろう。(合成関数のほうにはチルダを付けるなど。)

不正確さの2つ目について、これは\frac{\partial f}{\partial g_1}\frac{\partial f}{\partial y_j}\circ gとして解釈することで救える。

まとめ

連鎖律について、略記法で\frac{\partial f}{\partial x}とあらわされているものが正確な表現では合成関数の微分\frac{\partial f\circ g}{\partial x} に対応し、また略記法で\frac{\partial f}{\partial g_1}とあらわされているものは正確な表現では\frac{\partial f}{\partial s}\circ gに対応する。

その他合成関数の微分に関して注意したいこと

以下のサイトの内容が参考になる。そもそも合成関数を微分していると気づきにくい場合について説明している。 www.mynote-jp.com

*1:そうでなければどの変数で偏微分するのか明らかでなくなる。

*2:この記事では導出しない。

*3:「点ごとの積」の意味については Wikipediaの記事などを参照

対数の計算をする際の注意(積の対数を対数の和に分解する公式の前提条件)

次の式変形は正しいだろうか?

\displaystyle{\begin{eqnarray}
\ln{x^2}\stackrel{?}{=}2\ln{x}
\end{eqnarray}}

答えを言うと正しくない。

反例はx=-1のとき、左辺は0であるが、右辺は対数の中身が負の数になり定義できなくなる。

正しくない理由

この式変形は、

\displaystyle{\begin{eqnarray}
\ln{x^k}=k\ln{x}
\end{eqnarray}}

という対数に関する公式を利用したものだと思われるが、公式を適用できる条件を忘れたため間違ってしまった。 この公式が、常に等号が成り立つことを保証しているのはx>0のときのみである。

同様に、

\displaystyle{\begin{eqnarray}
\ln{xy}=\ln{x}+\ln{y}\\
\ln{\frac{x}{y}}=\ln{x}-\ln{y}\\
\end{eqnarray}}

などの公式も、x>0,y>0という条件が必要である。

正しい変形

公式が使えるように、対数の中身を正の数のべき乗に書き直すと、

\displaystyle{\begin{eqnarray}
\ln{x^2}&=&\ln{|x|^2}\\
&=&2\ln{|x|}
\end{eqnarray}}

これが正しい式変形である。*1 (ちなみに1行目右辺の対数の中身が0でないことは、変形前の式の値が定義できることから明らか。)

まとめ

対数の中身に積や商があるときに、対数を和や差の形に分解する公式は積や商の構成要素が正になっているように変形してから用いる。

*1:ある数の2乗のルートには絶対値がつくのと似ている。

VSCodeのMarkdown+Mathでブラケット記法を使う方法

VSCode拡張機能であるMarkdown+Mathを使って、Markdown文書を作成していたところ、 量子力学におけるブラケット記法がなぜか使えなかった。

\bra{\phi}

のように記述しても、プレビューでうまく表示されない。Markdown+Mathが使っているKaTeXは ブラケット記法をサポートしているはずだが・・・。(Supported Functions · KaTeX

setteings.jsonファイルを変更してマクロでコマンドを定義することにより、ブラケット記法を使えるようにした。

ブラケット記法を使えるようにする方法

まず、VSCodeを開いて、ウィンドウ左下の歯車アイコンをクリックして設定を開く。

設定のタブの右上にあるアイコンをクリックしてsettings.jsonを開く。 (マウスオーバーで「設定(JSON)を開く」と表示される方のアイコン)

settings.jsonファイルの一番外側の中括弧の中に、以下の内容を追加する。(すでに他の設定がある場合は、前後にカンマを入れるのを忘れないこと。)

"mdmath.macros": {
        "\\bra":"\\left\\langle#1\\right|",
        "\\ket":"\\left|#1\\right\\rangle",
        "\\braket":"\\left\\langle#1\\middle|#2\\right\\rangle",
        "\\bramket":"\\left\\langle#1\\middle|#2\\middle|#3\\right\\rangle"
    }

保存して、VSCodeをいったん閉じると、次回以降.mdファイルを開いたときにはプレビューでブラケット記法が正常に表示されるようになっている。 ただし、TeXコマンドの名前は上のコードのダブルクオーテーション内で設定したとおりになっているので、好みに合わせて変更すること。

Markdown All in Oneでの数式の書き方、数式の等号のそろえ方

Markdown All in OneはVisual Studio CodeVSCode)の拡張機能の一つであり、 VSCodeMarkdownの文書を書く際に便利なショートカットを提供したり、 プレビューを表示してくれたりする。この拡張機能を使う際の数式の書き方、 また数式の等号のそろえ方(式が複数行にわたるとき)を紹介する。


数式の書き方

インライン数式(文章内に埋め込まれる数式)は

$数式$

のように記述する。

ディスプレイ数式(それ専用の行を使って表示される数式)は

$$
数式
$$

のように記述する。($$で一行使わないとうまくいかない。)

数式は基本的にLaTeXの記法で記述する。例えば分数a/bをインライン数式で書きたかったら、

$\frac{a}{b}$

のように書く。

数式の等号のそろえ方

ディスプレイ数式について、数式が複数行にわたる場合、 等号をそろえたければ以下のように記述する。

$$
\begin{aligned}
数式 &= 数式 \\
&= 数式
\end{aligned}
$$

\begin{align}ではなく\begin{aligned}であることに注意。(KaTeXを使っていることが原因らしい? 詳しいことはわからない。)

像、逆像と包含関係

この記事では、集合の包含関係が像、逆像それぞれをとる操作のもとで 保存されることを示す。具体的には下記の二つの命題を示す。また、 それぞれの逆は成り立たないことを反例を挙げて示す。なお、 前提条件として、写像ff:X\to Yで、集合A,BA,B\subset X、集合C,DC,D\subset Yであるとする。

命題1
A\subset B\Rightarrow f(A)\subset F(B)
命題2
C\subset D\Rightarrow f^{-1}(C)\subset f^{-1}(D)

命題1の証明

\displaystyle{\begin{eqnarray}
y\in f(A)&\Leftrightarrow&\exists x\in A,f(x)=y\\
&\Rightarrow&\exists x\in B,f(x)=y\\
&\Leftrightarrow&y\in f(B)
\end{eqnarray}}

命題2の証明

\displaystyle{\begin{eqnarray}
x\in f^{-1}(C)&\Leftrightarrow&f(x)\in C\\
&\Rightarrow&f(x)\in D\\
&\Leftrightarrow&x\in f^{-1}(D)
\end{eqnarray}}

命題1の逆の反例

命題1の逆は「f(A)\subset f(B)\Rightarrow A\subset B
f:\mathbb{R}\to\mathbb{R}としてf(x)=x^ 2を考える。 ここで

\displaystyle{\begin{eqnarray}
f([1,2])=[1,4]\\
f([-3,-1])=[1,9]
\end{eqnarray}}

f([1,2])\subset f([-3,-1])だが[1,2]\not\subset [-3,-1]。 反例になっている。

命題2の逆の反例

命題2の逆は「f^{-1}(C)\subset f^{-1}(D)\Rightarrow C\subset Df:(0,1)\to\mathbb{R}としてf(x)=xを考える。 ここで

\displaystyle{\begin{eqnarray}
f^{-1} ( (1,2) )=\emptyset\\
f^{-1} ( (0,1) )=(0,1)
\end{eqnarray}}

f^{-1}( (1,2) )\subset f^{-1}( (0,1) )だが(1,2)\not\subset (0,1)。 反例になっている。

2020/06/05現在「逆像 包含関係」でgoogle検索すると上位に出てくるあるサイトには、 命題2の逆も正しいとする記述があるが、誤りだと自分は思う。