はじめに
東京大学工学部計数工学科B3の梅津です.
これは
物工/計数 Advent Calendar 2022
の10日目の記事です.
タイトルにEuler法と入っていますが,Ascoli-Arzelàの定理の話がメインです.
その応用としてEuler法の収束に関する話題を書きました.
この記事には,微積分の基礎的な部分,位相空間,距離空間の基礎的な部分,Lebesgue積分論の基礎的な部分あたりの内容が含まれていますが,知らなくてもなんとなく雰囲気は掴めると思います.
定理の多くになるべく証明をつけましたが,そのままにしておくと無駄に長くなるので折り畳んであります.
まともに読むと分量がそれなりに多いと思うので,定理などの主張だけ見ていただく形でも読んでいただければすごい嬉しいです.
内容に誤りがある可能性がおおいにありますので,何か間違いを発見したら指摘いただけるとありがたいです.
注意として,内容は大体一般的な参考書とかインターネットの記事とかに書いている内容ばかりだと思います.
(応物の)誰も知らないようなすごい定理とか,びっくりするような事実とかは多分ありませんが,「へ〜,そんなことがあるんだね〜」と思ってくれる人がいれば嬉しいなーというぐらいの内容です.
三角関数列の収束とか
この記事で使う記号
で正の整数全体を表すものとします(つまり,自然数にを含めない流儀で行かせていただきます).
記事で出てくる積分はすべてLebesgue積分を考えます.
以下では測度としては,断りがない限りLebesgue測度を考えることにします.
上のLebesgue測度をで表すことにします.
また,に対して,で,上のLebesgue測度に関する空間を表すことにします.
のとき,に対して,
でノルムを表すことにします.
のとき,
でノルムを表すことにします.
上の連続関数に対する一様ノルム
も同じ記号で表します(の連続性から,これはノルムと等しくなります).
部分列を何度もとる場合を除いて,関数列の部分列をと表記しています.
工学部にいるとフーリエ変換などで何かと三角関数のお世話になりますよね.
唐突ですがその三角関数自体の性質について少し考えます(フーリエ変換は一切出てきません).
は周期関数の列であり,が大きくなるほど振動が激しくなる関数列となっています.
この,関数列としての性質を少し考えます.
まず簡単にわかるように,関数列として(色んな意味で)収束しないことがわかります.
で定められる三角関数の列は,各点収束しない.
特に,一様収束もしない.
また,任意のに対して,収束しない.
命題1の証明
となることから,は収束せず,は各点収束しない.
特に,一様収束もしない.
とする.
任意のに対し,
が成り立ち,右辺の積分値は正で,その値はによらない定数である.
したがって,はノルムに関してCauchy列になり得ず,収束しない.
のときを考える.
連続関数に対するノルムは一様ノルムに等しいことを用いると,
収束することは一様収束することと同値であるが,既に示されているように一様収束しないので,収束もしない.
(証明終)
一般に,部分列を取ることを許せば収束する,という状況は多くあります.
例えば,上の数列は有界なとき,収束する部分列を持ちます.
今考えた関数列は,任意のに対して,
が成り立つことから,ある意味で有界となっています(後で定義する「一様有界」という性質を満たしています).
に値を取る関数列であるので数列の場合の類似として,部分列を取ることを許せば関数列として(何かしらの意味で)収束してほしいものです.
一方で,が大きくなるにつれて振動が激しくなることから,部分列を取ろうとも収束することはあまり期待できません.
実際に,次の命題が成り立ちます.
で定められる三角関数の列に対して,その任意の部分列は各点収束しない.
特に,任意の部分列は一様収束しない.
また,任意のに対して,任意の部分列は収束しない.
この命題を証明しようと思うと,意外に難しいことがわかります.
各点収束を考える必要があるので,Lebesgue積分を考えるのが良い気がします.
というか,それ以外で各点収束に対する一般的で使い勝手のよい定理ってあまりない気がします.
そういうわけで,命題2の証明に以下の補題3を使います.
を可積分関数とし,任意のに対して,
が成り立つとする.
このとき,が成り立つ.
ただし,を指示関数としたときに,
と定義する.
補題3の証明
は,を満たすとする.
このとき,
と,一点からなる集合のLebesgue測度はであることから,
が成り立つ.
の開集合でに含まれるものを考える.
と互いに交わらない開区間の族の合併で表すことができる.
(を連結成分分解すると,は局所弧状連結であることから,各連結成分は連結な開集合となって,開区間である.)
そして,各開区間は有理数を少なくとも一つ含むから,は高々可算である.
上で示したことと合わせると,
がわかる.
の閉集合でに含まれるものを考える.
であることと,
はの開集合であって,したがって,の開集合に高々2点(と)を加えたものである.
上で示したことと合わせると,
がわかる.
とし,
に対して,とする.
これは可測集合である.
非負値可測単関数の各点単調増加列で,に各点収束するものがとれる.
優収束定理によって,
である.
任意のに対して,
を満たすをとる.
は非負値単関数なのでがとれる.
Lebesgue測度の正則性によって,
の閉集合で,
を満たすものがとれる.
上で示したことと合わせると,
したがって,
となり,
がしたがう.
これから,
がわかる.
同様にに対して,
がわかるので,
がしたがう.
(証明終)
この補題3を使って命題2を証明します.
命題2の証明
のある部分列が存在して,に各点収束すると仮定する.
は可測関数である.
に対して優収束定理が使えて,任意のに対して,
となる.
したがって,補題3から,である.
一方,再び優収束定理によって,
となって矛盾する.
したがって,任意の部分列は各点収束しない.
とくに,任意の部分列は一様収束しない.
とする.
の部分列が収束すると仮定する.
一般に,収束するような関数列は,適切に部分列を取ることでほとんどいたる所各点収束する(認める).
したがって,の部分列であって,ほとんどいたる所各点収束するような関数列が取れるが,前半で示した「任意の部分列は各点収束しない」ことの証明はそのまま「任意の部分列はほとんどいたる所各点収束しない」ことの証明に使えるので,やはり矛盾する.
したがって,任意の部分列は収束しない.
のときを考える.
連続関数に対するノルムは一様ノルムに等しいことを用いると,
収束することは一様収束することと同値であるが,既に示されているように,任意の部分列は一様収束しないので,収束もしない.
(証明終)
Ascoli-Arzelàの定理
三角関数列(の任意の部分列)は収束しないことがわかりました.
直感とは矛盾していませんが,実数列との類似という観点からは悲しい結果となりました(私は悲しいと思っています).
一般的に,関数列に対して,部分列を取ることを許せば(何かしらの意味で)収束するという状況はあるのでしょうか.
これに関する定理がAscoli-Arzelàの定理です.
まず,必要な概念を定義します.
一様有界,同程度連続
をコンパクト集合,を連続関数の列とする.
- あるが存在して,任意の,任意のに対して,
が成り立つとき,は一様有界であるという. - 任意のに対して,あるが存在して,
「がを満たすならば」
が成り立つとき,は同程度連続であるという.
名前に一様と入る概念はいろいろあって,しかも他の概念と見かけ上はほんの少ししか異ならないものが多いのでややこしいですね.
これまでにちょこちょこ触れてきた実数列の定理を述べます.
Bolzano-Weierstrassの定理
を実数列とする.
が有界であるとき,ある部分列が存在して,収束する.
定理4の証明は省略します.
次のAscoli-Arzelàの定理が本題の定理です.
定理4(Bolzano-Weierstrassの定理)と比較すると,若干似ていると言えなくもないと思います.
Ascoli-Arzelàの定理
をコンパクト集合,を連続関数の列とする.
が一様有界かつ同程度連続であるとき,ある部分列が存在して,一様収束する.
(その一様収束するような部分列は,特に各点収束する.
また,任意のに対して収束する.)
定理5の証明
まず,で,は高々可算でありはにおいて稠密,つまりを満たすようなものをとる.
たとえば,次のようにして取れる.
とに対して,
と表す.
はコンパクトであるから,任意のに対して,有限個のが存在して,
が成り立つ.
とおき,
とおくことで,上で述べた性質を満たしている.
の元に適当に順序を定めることで,と表す.
(と有限集合である場合は以下の証明をより簡単なように修正することもできるし,のとき,としてを定めることで,以下の証明をそのまま使うこともできる.)
まず,関数列をとする.
に対して,が定まっているとする.
このとき,をの部分列であって,次のように定める.
はの数列であり,は一様有界であるから,この数列は有界な数列である.
したがって,定理4(Bolzano-Weierstrassの定理)によって,この数列の部分列で収束するようなものが存在する.
その部分列に対応する関数をとることによって,を作る.
つまり,が収束するようにとる.
このようにして作られた関数列の列
を考える.
とすることで関数列を作ると,これは元の関数列の部分列となっている.
そして,任意のに対して,はの部分列となっている.
したがって,は収束するので,も収束する.
つまり,任意のに対して,は収束する.
最後に,が一様収束することを示す.
そのためには,任意のに対して,あるが存在して,任意のに対して,
が成り立つことを示せば良い.
はの部分列であって,したがって,同程度連続である.
を任意とする.
あるが存在して,
「がを満たすならば」
が成り立つ.
このようなに対して,がコンパクトであることから,有限個のが存在して,
が成り立つ.
そして,はにおいて稠密であったから,各に対して,あるが存在してが成り立つ.
(は証明の最初の方でに順序を入れて作ったとは無関係です.)
このとき,
が成り立つ.
各に対して,は収束するから,特にCauchy列となっている.
したがって,あるが存在して,任意のに対して
が成り立つ.
とおく.
任意のをとる.
任意のに対して,あるが存在して,
が成り立つ.
ここまでの不等式から,
となる.
これはを意味しているので,証明が終わる.
(証明終)
定理の後半部分にあるように,上の定理ではがコンパクト集合であることから,一様収束するならば色々な意味で収束します.
ただし,後半部分は三角関数の収束の話に関連して付け足しただけで,Ascoli-Arzelàの定理というと後半部分は含みません.
三角関数列は同程度連続ではないために悲しい結果となりました.
実用的に役立つという意味では,個人的には定理5の形で十分ではないかと思っていますが,位相空間の言葉を使うことでさらに数学的に綺麗な主張になります.
そのために,まず定理4(Bolzano-Weierstrassの定理)(から従う事実)を位相空間の言葉で述べると次のようになります.
Heine-Borelの定理
とする.以下は同値である.
- は相対コンパクトである.つまり,はのコンパクト集合である.
- は有界である.
こちらの証明も省略します.
定理6の(1)は次のようなことを言っています.
「に含まれる任意の点列に対して,ある部分列が存在して,において収束する.」
つまり,(2)ならば(1)は定理4(Bolzano-Weierstrassの定理)からすぐにしたがいます.
定理6(Heine-Borelの定理)の(2)ならば(1)の部分から,定理4(Bolzano-Weierstrassの定理)がしたがうこともわかります.
定理6(Heine-Borelの定理)は,定理4(Bolzano-Weierstrassの定理)よりもさらに強く,逆に(1)ならば(2)ということも主張しています.
これに類似して,Ascoli-Arzelàの定理にも位相空間の言葉で述べられた形の定理が成り立ちます.
そのために必要な次の定理を認めます.
を(ユークリッド空間の部分集合とは限らない)コンパクト空間とし,上の値連続関数の全体をとする.
このとき,
はの距離を定めて,は距離空間となる.
また,の点列がこの距離においてに収束することは,を関数列と見たときにに一様収束することと同値である.
こちらも証明は省略します.
関数を点として見ていることが大切だと思います.
また,必要な概念を定義します.
一様有界,同程度連続
をコンパクト空間,を上の値連続関数の族とする.
つまり,とする.
- あるが存在して,任意の,任意のに対して,
が成り立つとき,は一様有界であるという. - 任意の,任意のに対して,のある近傍が存在して,
「任意の,任意のに対して,」
が成り立つとき,は同程度連続であるという.
定義1では,のコンパクト集合上の連続関数列に対して定義しました.
定義2では,一般のコンパクト空間上の連続関数の族に対して定義しています.
定義の内容は概ね同じとなっていますが,同程度連続については,「任意の〜」と「ある〜」の順番が入れ替わっています.
しかしながら,のコンパクト集合上の連続関数列の定義1における同程度連続と,定義2における同程度連続は同値なものになります.
これは,コンパクトであることを使って,「コンパクト集合上の連続関数は一様連続である」という定理の証明と同様に示すことができます.
また,定義1では関数列(つまり,いい順序が入った可算個の関数の集合)に対して,定義2では関数の族(順序が入っていないし,可算とも限らない集合)に対して定義しています.
列でも族でも同様に定義できますが,一応区別しているのは次のような理由があります.
定理4(Bolzano-Weierstrassの定理)は列に対する主張ですが,定理6(Heine-Borelの定理)は集合に対する主張です.
同じように,Ascoli-Alzeràの定理にも列に対する主張(定理5)の形と,族に対する主張の形があるので,今回はそれを見越してこのような定義にしました.
以上の概念を用いて,一般の位相空間における定理を述べます.
次の定理も,定理5と同じくAscoli-Arzelàの定理と呼ばれます.
Ascoli-Arzelàの定理
をコンパクト空間とし,とする.以下は同値である.
- は相対コンパクトである.つまり,はのコンパクト部分集合である.
- は一様有界かつ同程度連続である.
定理8の(1)は次のようなことを言っています.
「に含まれる任意の点列に対して,ある部分列が存在して,において収束する.」
ここで,定理7にあるように,に含まれる点列とは関数列のことであり,それが収束するというのは,関数列が一様収束するということです.
つまり,(2)ならば(1)は,定理5(Ascoli-Arzelàの定理)と概ね同じことを言っています(実際には,一般のコンパクト集合に対して主張しているので,定理5よりもかなり強いことを言っています).
定理4(Bolzano-Weierstrassの定理)と定理6(Heine-Borelの定理)の対応は,定理5と定理8の対応と似ていることがわかります.
しかしながら,定理5の(今回の)証明を修正することで定理8の証明にすることはできません.
連続関数の定義域が一般のコンパクト空間となっていることが理由として挙げられます.
定理5の証明では,(の部分集合)の可分性を用いていますが,一般のコンパクト空間ではそのような性質が成り立たないからです.
定理8の証明は定理5の証明とはまったく別のものとなっていますが,他に必要な定理が多いので今回は省略させていただきます.
Euler法とAscoli-Arzelàの定理
最後に,Ascoli-Arzelàの定理の応用として,Euler法に関するあまり役に立たない話について書きます.
とし,
とします.
まず,次の問題を考えます.
を連続関数とする.
このとき,次の微分方程式の初期値問題
を満たす局所解は存在するか?
局所解とは,あるが存在して,開区間で定義された,上記の微分方程式を満たす関数のことです.
問題の仮定をもう少し強くして,がLipschitz連続である場合には局所解が存在して,しかも一意的であることが知られています.
つまり,次の定理が成り立ちます.
をLipschitz連続関数とする.
このとき,次の微分方程式の初期値問題
を満たす局所解が存在する.
また,として,
がともに局所解であるとき,として,上,
が成り立つ.
この定理によって解の存在は保証されますが,その解の形は具体的にはわからないことも多いです.
そんな場合に近似解を数値的に得る方法の一つがEuler法です(学科の方は何かしらの講義で1度は聞いたことがある方が多いと思います).
Euler法は次のようなものです.
解が欲しい区間をとし,区間を幅で個の区間に分割する.
つまり,として,
と表す.
時刻における近似値が求まったとします.
時刻における近似値は初期値です.
このとき,時刻における近似値を
として求める.
このようにして,もとまった近似値を折線で結ぶことによって,近似関数をもとめる.
つまり,上,
によって,近似関数をもとめる.
以上がEuler法になります.
時刻における近似値をもとめる際に
としたところですが,
これは大体次のような気持ちからこのような計算をしています.
時刻からに変化するときに,関数の変化量は大体となります.
したがって,
は大体に等しくなるので,無理やり等号で繋いだ上で微分方程式も使って,
となります.
これをについて解くことで,近似値をもとめる際に使った式が得られます.
色々と適当ですが,Euler法の気持ちがわかりました.
の極限を考えると,無理やり等号で繋いだところが実際に等号になることから,正しい解になりそうな気がします.
つまり,刻み幅で,Euler法によってもとめた近似解をとします.
のとき,となるので,が正しい解に一様収束することが期待されます.
ここで,一度元の問題に戻ります.
つまり,がLipschitz連続とは限らない普通の連続なときの問題です.
再掲すると,次の問題です.
を連続関数とする.
このとき,次の微分方程式の初期値問題
を満たす局所解は存在するか?
これに対して,次の定理が成り立ちます.
を連続関数とする.
このとき,次の微分方程式の初期値問題
を満たす局所解が存在する.
以下の証明では,Euler法とAscoli-Arzelàの定理を使って解を作ります.
なお,解の一意性は成り立ちません.
例えば,
を考えると,
で定義される二つの関数は,ともに解になっています.
定理10の証明
とおく.
は連続関数では有界閉集合なので最大値を持つ.
とおく.
区間上の解が構成できれば,同様に上の解も構成できる.
これらを繋いだものは区間上の解となって,局所解となる.
区間上で,刻み幅でEuler法を用いて近似解を作る.
このとき,に対して,時刻における近似値が定義されることは次のようにわかる.
(の定義域から出ていく可能性があることを懸念しています.)
刻み幅をとおく.
また,に対して,時刻の区間の分点をとおく.
である.
に対して,が定義されていて,
となっているとする.
このとき,
としてが定まる.
このとき,
が成り立つから,
となる.
また,は凸集合なので,折線で結んでもまたこの集合に含まれて,したがって,任意のに対して,が成り立つ.
とくに,はwell-definedである.
このようにして,連続関数列が定義される.
任意の,任意のに対して,
が成り立つので,一様有界である.
また,折線の傾きはすべて以下であるから,
任意の,任意のに対して,
が成り立つ.
このことから,同程度連続であることが従う.
したがって,定理5(Ascoli-Arzelàの定理)より,ある部分列が存在して,連続関数に一様収束する.
この部分列をと書き直す.
これに応じて,刻み幅,時刻の区間の分点,近似値も対応するものに書き直す.
が任意のに対して
を満たすことを示せば,が上の解となっていることがわかる.
(においては片側微分係数がとなるから,上の解とつなぐと局所解が得られる.)
そのためには,任意のに対して
を示せば良い.
また,任意のに対して,のとき,近似解は
と表されることに注意する.
,を任意とする.
は上連続だから,一様連続であって,あるが存在して,
を満たす任意のに対して,
が成り立つ.
はに一様収束するから,あるが存在して,任意のに対して,
が成り立つ.
また,あるが存在して,任意のに対して,
が成り立つ.
とおく.
任意のに対して,任意のについて,
なるをとれば,同程度連続を示したところで使った不等式を用いて,
がわかる.
そして,以上の不等式を用いて,
これは
を意味しており,証明が終わる.
(証明終)
定理10の証明から,次のことがわかります.
解が欲しい区間をとします.
(としたときに,であればこの定理の証明が回りますが,それ以上欲張ると証明が回りません.)
この区間で刻み幅をとして,Euler法を使って近似解の列を作れば,適切に部分列をとることで厳密解の一つに一様収束します.
しかしこれは,ただ刻み幅を小さくすれば厳密解に収束していくことを意味するわけではありません.
実際に,
に対して同じことを考えれば,収束しないことが示せるようです[2].
しかし,部分列の取り方は証明からはわからないので,大変不便です.
ここでさきほど考えたように,の条件を少し強くして,Lipschitz連続とすると,Euler法で作った近似解は一様収束するようです[3](時間がなくて私は理解できておりません).
つまり,次が成り立ちます.
をLipschitz連続関数とする.
このとき,次の微分方程式の初期値問題
に対して,Euler法によって作られる関数列は,厳密解(定理9が保証するように唯一つの解)に一様収束する.
つまり,がLipschitz連続ならば,刻み幅を小さくすればするほど(誤差がなければ)より厳密解に近い解が得られるということを意味しています.
実際には計算機で計算することになるので,誤差が発生します.
さらに,刻み幅を小さくすればするほど,必要な計算回数も多くなって誤差が積み重なることになり,思うように誤差が小さくはならないと思います.
工学部で出てくる関数は多分大体Lipschitz連続なので,定理11を念頭に置いてEuler法を使えばOKです.
これが「Euler法に関するあまり役に立たない話」というタイトルにした理由で,自分はAscoli-Arzelàの定理に関係する話が書きたかったのと,さらに欲張って工学部っぽい話をしようとした結果Euler法の話をするに至りましたが,実用上は,前半とは無関係の定理11で十分だと思います(そしてこれにはAscoli-Arzelàの定理は一切関係ありません).
そしてさらにいうと,計算機で計算する上では刻み幅をいくらでも小さくするというのは無理なので,ある程度の誤差は諦めた上でどの程度誤差を小さくすることができるかというのが大事になってきます.
定理10はそのような評価には一切役立ちません.
ですが理論としてはとても大切だと思っています.
Euler法を実装したけど挙動がおかしいというときは,区間を欲張りすぎていないか,Lipschitz連続であるか,に注意してみてください.
というかRunge-Kutta法など,もっとよい数値解法を使うのが良いと思います.
最後に
結局役に立たない話が多かったですが,最後まで読んでいただきありがとうございます.
明日以降も
物工/計数 Advent Calendar 2022
をぜひお楽しみください.