2
大学数学基礎解説
文献あり

Euler法に関するあまり役に立たない話

394
0

はじめに

東京大学工学部計数工学科B3の梅津です.
これは 物工/計数 Advent Calendar 2022 の10日目の記事です.

タイトルにEuler法と入っていますが,Ascoli-Arzelàの定理の話がメインです.
その応用としてEuler法の収束に関する話題を書きました.
この記事には,微積分の基礎的な部分,位相空間,距離空間の基礎的な部分,Lebesgue積分論の基礎的な部分あたりの内容が含まれていますが,知らなくてもなんとなく雰囲気は掴めると思います.
定理の多くになるべく証明をつけましたが,そのままにしておくと無駄に長くなるので折り畳んであります.
まともに読むと分量がそれなりに多いと思うので,定理などの主張だけ見ていただく形でも読んでいただければすごい嬉しいです.
内容に誤りがある可能性がおおいにありますので,何か間違いを発見したら指摘いただけるとありがたいです.

注意として,内容は大体一般的な参考書とかインターネットの記事とかに書いている内容ばかりだと思います.
(応物の)誰も知らないようなすごい定理とか,びっくりするような事実とかは多分ありませんが,「へ〜,そんなことがあるんだね〜」と思ってくれる人がいれば嬉しいなーというぐらいの内容です.

三角関数列の収束とか

この記事で使う記号

Nで正の整数全体を表すものとします(つまり,自然数に0を含めない流儀で行かせていただきます).

記事で出てくる積分はすべてLebesgue積分を考えます.
以下では測度としては,断りがない限りLebesgue測度を考えることにします.
[0,2π]上のLebesgue測度をmで表すことにします.
また,1pに対して,Lpで,[0,2π]上のLebesgue測度に関するLp空間を表すことにします.
1p<のとき,fLpに対して,
fp=(02π|f(x)|pdx)1/p
Lpノルムを表すことにします.
p=のとき,
f=inf{M0|f(x)|Ma.e.x[0,2π]}
Lノルムを表すことにします.
[0,2π]上の連続関数fに対する一様ノルム
f=maxx[0,2π]|f(x)|
も同じ記号で表します(fの連続性から,これはLノルムと等しくなります).

部分列を何度もとる場合を除いて,関数列{fn}nNの部分列を{fk(n)}nNと表記しています.

工学部にいるとフーリエ変換などで何かと三角関数のお世話になりますよね.
唐突ですがその三角関数自体の性質について少し考えます(フーリエ変換は一切出てきません).

sinnxは周期関数の列であり,nNが大きくなるほど振動が激しくなる関数列となっています.
この,関数列としての性質を少し考えます.
まず簡単にわかるように,関数列として(色んな意味で)収束しないことがわかります.

fn:[0,2π]R,xsinnxnN
で定められる三角関数の列{fn}nNは,各点収束しない.
特に,一様収束もしない.
また,任意のp(1p)に対して,Lp収束しない.

命題1の証明
fn(π2)={1if n1 mod 41if n3 mod 40otherwise
となることから,{fn(π/2)}nNは収束せず,{fn}nNは各点収束しない.
特に,一様収束もしない.

1p<とする.
任意のNNに対し,
f2NfNpp=02π|sin2NxsinNx|p dx=1N02Nπ|sin2xsinx|p dx=02π|sin2xsinx|p dx
が成り立ち,右辺の積分値は正で,その値はNによらない定数である.
したがって,{fn}nNLpノルムに関してCauchy列になり得ず,Lp収束しない.

p=のときを考える.
連続関数に対するLノルムは一様ノルムに等しいことを用いると,
L収束することは一様収束することと同値であるが,既に示されているように一様収束しないので,L収束もしない.

(証明終)

一般に,部分列を取ることを許せば収束する,という状況は多くあります.
例えば,R上の数列{an}nNは有界なとき,収束する部分列を持ちます.
今考えた関数列{fn}nNは,任意のnN,x[0,2π]に対して,
|sinnx|1
が成り立つことから,ある意味で有界となっています(後で定義する「一様有界」という性質を満たしています).
Rに値を取る関数列であるので数列の場合の類似として,部分列を取ることを許せば関数列として(何かしらの意味で)収束してほしいものです.

一方で,nNが大きくなるにつれて振動が激しくなることから,部分列を取ろうとも収束することはあまり期待できません.
実際に,次の命題が成り立ちます.

fn:[0,2π]R,xsinnxnN
で定められる三角関数の列{fn}nNに対して,その任意の部分列は各点収束しない.
特に,任意の部分列は一様収束しない.
また,任意のp(1p)に対して,任意の部分列はLp収束しない.

この命題を証明しようと思うと,意外に難しいことがわかります.
各点収束を考える必要があるので,Lebesgue積分を考えるのが良い気がします.
というか,それ以外で各点収束に対する一般的で使い勝手のよい定理ってあまりない気がします.

そういうわけで,命題2の証明に以下の補題3を使います.

f:[0,2π]Rを可積分関数とし,任意のx[0,2π]に対して,
0xf(t) dt=0
が成り立つとする.
このとき,f(x)=0a.e.x[0,2π]が成り立つ.

ただし,1[0,x]:[0,2π]Rを指示関数としたときに,
0xf(t) dt=02πf(t)1[0,x](t) dt
と定義する.

補題3の証明
a,b[0,2π]は,abを満たすとする.
このとき,
(a,b]f(t) dt=0bf(t) dt0af(t) dt=0
と,一点からなる集合のLebesgue測度は0であることから,
(a,b)f(t) dt=0
が成り立つ.

Rの開集合U[0,2π]に含まれるものを考える.
U=λΛUλと互いに交わらない開区間の族{Uλ}λΛの合併で表すことができる.
Uを連結成分分解すると,Uは局所弧状連結であることから,各連結成分は連結な開集合となって,開区間である.)
そして,各開区間は有理数を少なくとも一つ含むから,Λは高々可算である.
上で示したことと合わせると,
Uf(t) dt=λΛUλf(t) dt=0
がわかる.

Rの閉集合F[0,2π]に含まれるものを考える.
F([0,2π]F)=[0,2π]であることと,
[0,2π]F[0,2π]の開集合であって,したがって,Rの開集合に高々2点(02π)を加えたものである.
上で示したことと合わせると,
Ff(t) dt=[0,2π]f(t) dt[0,2π]Ff(t) dt=0
がわかる.

E+={x[0,2π]f(x)>0}とし,
kNに対して,Ek={x[0,2π]f(x)1/k}とする.
これは可測集合である.
非負値可測単関数の各点単調増加列{φn}nNで,fに各点収束するものがとれる.
優収束定理によって,
limn[0,2π]|f(t)φn(t)| dt=0
である.
任意のε>0に対して,
[0,2π]|f(t)φn(t)| dt<ε/2
を満たすnNをとる.
φnは非負値単関数なのでmaxx[0,2π]φn(x)=Mがとれる.

Lebesgue測度の正則性によって,
Rの閉集合Fで,
FEk,m(EkF)<ε2M
を満たすものがとれる.

|EkFf(t) dt|EkF|f(t)φn(t)| dt+|EkFφn(t) dt|<ε2+Mm(EkF)<ε

上で示したことと合わせると,
|Ekf(t) dt||Ff(t) dt|+|EkFf(t) dt|<ε

したがって,
0=Ekf(t) dt1km(Ek)
となり,
m(Ek)=0がしたがう.
これから,
m(E+)=m(kNEk)kNm(Ek)=0
がわかる.
同様にE={x[0,2π]f(x)<0}に対して,
m(E)=0がわかるので,
f(x)=0a.e.x[0,2π]がしたがう.

(証明終)

この補題3を使って命題2を証明します.

命題2の証明
{fn}nNのある部分列{fk(n)}nNが存在して,fに各点収束すると仮定する.
fは可測関数である.

{fk(n)}nNに対して優収束定理が使えて,任意のx[0,2π]に対して,
0xf(t) dt=limn0xfk(n)(t) dt=limn1k(n)(cosk(n)x1)=0
となる.

したがって,補題3から,f(x)=0a.e.x[0,2π]である.
一方,再び優収束定理によって,
0=02π|f(t)| dt=limn02π|fk(n)(t)| dt=limn02π|sink(n)t| dt=limn1k(n)02k(n)π|sint| dt=limn02π|sint| dt=4
となって矛盾する.
したがって,任意の部分列は各点収束しない.
とくに,任意の部分列は一様収束しない.

1p<とする.
{fn}nNの部分列{fk(n)}nNLp収束すると仮定する.
一般に,Lp収束するような関数列は,適切に部分列を取ることでほとんどいたる所各点収束する(認める).
したがって,{fn}nNの部分列であって,ほとんどいたる所各点収束するような関数列が取れるが,前半で示した「任意の部分列は各点収束しない」ことの証明はそのまま「任意の部分列はほとんどいたる所各点収束しない」ことの証明に使えるので,やはり矛盾する.
したがって,任意の部分列はLp収束しない.

p=のときを考える.
連続関数に対するLノルムは一様ノルムに等しいことを用いると,
L収束することは一様収束することと同値であるが,既に示されているように,任意の部分列は一様収束しないので,L収束もしない.

(証明終)

Ascoli-Arzelàの定理

三角関数列(の任意の部分列)は収束しないことがわかりました.
直感とは矛盾していませんが,実数列との類似という観点からは悲しい結果となりました(私は悲しいと思っています).
一般的に,関数列に対して,部分列を取ることを許せば(何かしらの意味で)収束するという状況はあるのでしょうか.
これに関する定理がAscoli-Arzelàの定理です.

まず,必要な概念を定義します.

一様有界,同程度連続

KRdをコンパクト集合,{fn}nNを連続関数f:KRの列とする.

  1. あるM>0が存在して,任意のnN,任意のxKに対して,
    |fn(x)|<M
    が成り立つとき,{fn}nNは一様有界であるという.
  2. 任意のε>0に対して,あるδ>0が存在して,
    x,yK|xy|<δを満たすならば|fn(x)fn(y)|<ε
    が成り立つとき,{fn}nNは同程度連続であるという.

名前に一様と入る概念はいろいろあって,しかも他の概念と見かけ上はほんの少ししか異ならないものが多いのでややこしいですね.

これまでにちょこちょこ触れてきた実数列の定理を述べます.

Bolzano-Weierstrassの定理

{an}nNを実数列とする.
{an}nNが有界であるとき,ある部分列が存在して,収束する.

定理4の証明は省略します.

次のAscoli-Arzelàの定理が本題の定理です.
定理4(Bolzano-Weierstrassの定理)と比較すると,若干似ていると言えなくもないと思います.

Ascoli-Arzelàの定理

KRdをコンパクト集合,{fn}nNを連続関数f:KRの列とする.
{fn}nNが一様有界かつ同程度連続であるとき,ある部分列が存在して,一様収束する.

(その一様収束するような部分列は,特に各点収束する.
また,任意のp(1p)に対してLp収束する.)

定理5の証明

まず,UKで,Uは高々可算でありUKにおいて稠密,つまりU=Kを満たすようなものをとる.
たとえば,次のようにして取れる.
aKr>0に対して,
B(a,r)={xK|xa|<r}
と表す.
Kはコンパクトであるから,任意のnNに対して,有限個のa1(n),,am(n)(n)Kが存在して,
K=i=1m(n)B(ai(n),1/n)
が成り立つ.
Un={a1(n),,am(n)(n)}
とおき,
U=nNUn
とおくことで,上で述べた性質を満たしている.

Uの元に適当に順序を定めることで,{un}nNと表す.
U={u1,,uk}と有限集合である場合は以下の証明をより簡単なように修正することもできるし,nkのとき,un=ukとして{un}nNを定めることで,以下の証明をそのまま使うこともできる.)

まず,関数列{f(0)n}nN{fn}nNとする.
kNに対して,{f(k1)n}nNが定まっているとする.
このとき,{f(k)n}nN{f(k1)n}nNの部分列であって,次のように定める.
{fn(k1)(uk)}nNRの数列であり,{fn}nNは一様有界であるから,この数列は有界な数列である.
したがって,定理4(Bolzano-Weierstrassの定理)によって,この数列の部分列で収束するようなものが存在する.
その部分列に対応する関数をとることによって,{f(k)n}nNを作る.
つまり,{fn(k)(uk)}nNが収束するようにとる.

このようにして作られた関数列の列
{f(k)n}nN,kNを考える.
gn=fn(n),nNとすることで関数列{gn}nNを作ると,これは元の関数列{fn}nNの部分列となっている.

そして,任意のkNに対して,{gn}nk{f(k)n}nNの部分列となっている.
したがって,{gn(uk)}nkは収束するので,{gn(uk)}nNも収束する.
つまり,任意のuUに対して,{gn(u)}nNは収束する.

最後に,{gn}nNが一様収束することを示す.
そのためには,任意のε>0に対して,あるNNが存在して,任意のn,mNに対して,
gngm<ε
が成り立つことを示せば良い.

{gn}nN{fn}nNの部分列であって,したがって,同程度連続である.
ε>0を任意とする.
あるδ>0が存在して,
x,yK|xy|<δを満たすならば|f(x)f(y)|<ε/3
が成り立つ.
このようなδ>0に対して,Kがコンパクトであることから,有限個のa1,,akKが存在して,
i=1kB(ai,δ/2)=K
が成り立つ.
そして,UKにおいて稠密であったから,各i(i=1,,k)に対して,あるviUが存在してviB(ai,δ/2)が成り立つ.
viは証明の最初の方でUに順序を入れて作ったuiとは無関係です.)
このとき,
i=1kB(vi,δ)=K
が成り立つ.
i(i=1,,k)に対して,{gn(vi)}nNは収束するから,特にCauchy列となっている.
したがって,あるNiNが存在して,任意のn,mNiに対して
|gn(vi)gm(vi)|<ε/3
が成り立つ.
N=maxi=1,,kNiとおく.

任意のn,mNをとる.
任意のxKに対して,あるi(i=1,k)が存在して,
xB(vi,δ)が成り立つ.
ここまでの不等式から,
|gn(x)gm(x)||gn(x)gn(vi)|+|gn(vi)gm(vi)|+|gm(vi)gm(x)|<ε/3+ε/3+ε/3=ε
となる.
これはgngm<εを意味しているので,証明が終わる.

(証明終)


定理の後半部分にあるように,上の定理ではKがコンパクト集合であることから,一様収束するならば色々な意味で収束します.
ただし,後半部分は三角関数の収束の話に関連して付け足しただけで,Ascoli-Arzelàの定理というと後半部分は含みません.

三角関数列は同程度連続ではないために悲しい結果となりました.
実用的に役立つという意味では,個人的には定理5の形で十分ではないかと思っていますが,位相空間の言葉を使うことでさらに数学的に綺麗な主張になります.

そのために,まず定理4(Bolzano-Weierstrassの定理)(から従う事実)を位相空間の言葉で述べると次のようになります.

Heine-Borelの定理

URとする.以下は同値である.

  1. Uは相対コンパクトである.つまり,URのコンパクト集合である.
  2. Uは有界である.

こちらの証明も省略します.

定理6の(1)は次のようなことを言っています.
Uに含まれる任意の点列に対して,ある部分列が存在して,Rにおいて収束する.」
つまり,(2)ならば(1)は定理4(Bolzano-Weierstrassの定理)からすぐにしたがいます.
定理6(Heine-Borelの定理)の(2)ならば(1)の部分から,定理4(Bolzano-Weierstrassの定理)がしたがうこともわかります.
定理6(Heine-Borelの定理)は,定理4(Bolzano-Weierstrassの定理)よりもさらに強く,逆に(1)ならば(2)ということも主張しています.

これに類似して,Ascoli-Arzelàの定理にも位相空間の言葉で述べられた形の定理が成り立ちます.

そのために必要な次の定理を認めます.

Kを(ユークリッド空間の部分集合とは限らない)コンパクト空間とし,K上のR値連続関数の全体をC(K)とする.
このとき,
d:C(K)×C(K)R,(f,g)d(f,g)=maxxK|f(x)g(x)|
C(K)の距離を定めて,C(K)は距離空間となる.

また,C(K)の点列{fn}nNがこの距離においてfに収束することは,{fn}nNを関数列と見たときにfに一様収束することと同値である.

こちらも証明は省略します.
関数を点として見ていることが大切だと思います.

また,必要な概念を定義します.

一様有界,同程度連続

Kをコンパクト空間,FK上のR値連続関数の族とする.
つまり,FC(K)とする.

  1. あるM>0が存在して,任意のfF,任意のxKに対して,
    |f(x)|<M
    が成り立つとき,Fは一様有界であるという.
  2. 任意のxK,任意のε>0に対して,xのある近傍Uが存在して,
    「任意のfF,任意のyUに対して,|f(x)f(y)|<ε
    が成り立つとき,Fは同程度連続であるという.

定義1では,Rdのコンパクト集合上の連続関数列に対して定義しました.
定義2では,一般のコンパクト空間上の連続関数の族に対して定義しています.
定義の内容は概ね同じとなっていますが,同程度連続については,「任意の〜」と「ある〜」の順番が入れ替わっています.
しかしながら,Rdのコンパクト集合上の連続関数列の定義1における同程度連続と,定義2における同程度連続は同値なものになります.
これは,コンパクトであることを使って,「コンパクト集合上の連続関数は一様連続である」という定理の証明と同様に示すことができます.

また,定義1では関数列(つまり,いい順序が入った可算個の関数の集合)に対して,定義2では関数の族(順序が入っていないし,可算とも限らない集合)に対して定義しています.
列でも族でも同様に定義できますが,一応区別しているのは次のような理由があります.
定理4(Bolzano-Weierstrassの定理)は列に対する主張ですが,定理6(Heine-Borelの定理)は集合に対する主張です.
同じように,Ascoli-Alzeràの定理にも列に対する主張(定理5)の形と,族に対する主張の形があるので,今回はそれを見越してこのような定義にしました.

以上の概念を用いて,一般の位相空間における定理を述べます.
次の定理も,定理5と同じくAscoli-Arzelàの定理と呼ばれます.

Ascoli-Arzelàの定理

Kをコンパクト空間とし,FC(K)とする.以下は同値である.

  1. Fは相対コンパクトである.つまり,FC(K)のコンパクト部分集合である.
  2. Fは一様有界かつ同程度連続である.

定理8の(1)は次のようなことを言っています.
Fに含まれる任意の点列に対して,ある部分列が存在して,C(X)において収束する.」
ここで,定理7にあるように,Fに含まれる点列とは関数列のことであり,それが収束するというのは,関数列が一様収束するということです.
つまり,(2)ならば(1)は,定理5(Ascoli-Arzelàの定理)と概ね同じことを言っています(実際には,一般のコンパクト集合に対して主張しているので,定理5よりもかなり強いことを言っています).

定理4(Bolzano-Weierstrassの定理)と定理6(Heine-Borelの定理)の対応は,定理5と定理8の対応と似ていることがわかります.

しかしながら,定理5の(今回の)証明を修正することで定理8の証明にすることはできません.
連続関数の定義域が一般のコンパクト空間となっていることが理由として挙げられます.
定理5の証明では,Rd(の部分集合)の可分性を用いていますが,一般のコンパクト空間ではそのような性質が成り立たないからです.
定理8の証明は定理5の証明とはまったく別のものとなっていますが,他に必要な定理が多いので今回は省略させていただきます.

Euler法とAscoli-Arzelàの定理

最後に,Ascoli-Arzelàの定理の応用として,Euler法に関するあまり役に立たない話について書きます.

r>0,ρ>0,t0R,ξ0Rdとし,
D={(t,x)Rd+1|tt0|r,|xξ0|ρ}とします.

まず,次の問題を考えます.

f:DRn,(t,x)f(t,x)を連続関数とする.
このとき,次の微分方程式の初期値問題
dxdt=f(t,x),x(t0)=ξ0
を満たす局所解は存在するか?

局所解とは,あるδ>0が存在して,開区間(t0δ,t0+δ)で定義された,上記の微分方程式を満たす関数xのことです.
問題の仮定をもう少し強くして,fがLipschitz連続である場合には局所解が存在して,しかも一意的であることが知られています.
つまり,次の定理が成り立ちます.

f:DRd,(t,x)f(t,x)をLipschitz連続関数とする.
このとき,次の微分方程式の初期値問題
dxdt=f(t,x),x(t0)=ξ0
を満たす局所解が存在する.

また,δ1,δ2>0として,
x1:(t0δ1,t0+δ1)Rd,x2:(t0δ2,t0+δ2)Rd
がともに局所解であるとき,δ=min{δ1,δ2}として,(t0δ,t0+δ)上,
x1=x2が成り立つ.

この定理によって解の存在は保証されますが,その解の形は具体的にはわからないことも多いです.
そんな場合に近似解を数値的に得る方法の一つがEuler法です(学科の方は何かしらの講義で1度は聞いたことがある方が多いと思います).

Euler法は次のようなものです.
解が欲しい区間を[t0,t0+r]とし,区間を幅hn個の区間に分割する.
つまり,ti=t0+hi,i=1,,nとして,
[t0,t0+r]=[t0,t1][tn1,tn]
と表す.
時刻tiにおける近似値ξiが求まったとします.
時刻t0における近似値は初期値ξ0です.
このとき,時刻ti+1における近似値ξi+1
ξi+1=ξi+f(ti,ξi)h
として求める.
このようにして,もとまった近似値を折線で結ぶことによって,近似関数ξをもとめる.
つまり,[ti,ti+1]上,
ξ(t)=ξi+ξi+1ξiti+1ti(tti)
によって,近似関数をもとめる.
以上がEuler法になります.

時刻ti+1における近似値ξi+1をもとめる際に
ξi+1=ξi+f(ti,ξi)h
としたところですが,
これは大体次のような気持ちからこのような計算をしています.
時刻tiからti+1に変化するときに,関数xの変化量は大体ξi+1ξiとなります.
したがって,
ξi+1ξiti+1ti
は大体dxdtに等しくなるので,無理やり等号で繋いだ上で微分方程式も使って,
ξi+1ξiti+1ti=dxdt=f(ti,ξi)
となります.
これをξi+1について解くことで,近似値ξi+1をもとめる際に使った式が得られます.

色々と適当ですが,Euler法の気持ちがわかりました.
h0の極限を考えると,無理やり等号で繋いだところが実際に等号になることから,正しい解になりそうな気がします.
つまり,刻み幅r/nで,Euler法によってもとめた近似解をξ(n)とします.
nのとき,h0となるので,{ξ(n)}nNが正しい解xに一様収束することが期待されます.

ここで,一度元の問題に戻ります.
つまり,fがLipschitz連続とは限らない普通の連続なときの問題です.
再掲すると,次の問題です.

f:DRd,(t,x)f(t,x)を連続関数とする.
このとき,次の微分方程式の初期値問題
dxdt=f(t,x),x(t0)=ξ0
を満たす局所解は存在するか?

これに対して,次の定理が成り立ちます.

f:DRd,(t,x)f(t,x)を連続関数とする.
このとき,次の微分方程式の初期値問題
dxdt=f(t,x),x(t0)=ξ0
を満たす局所解が存在する.

以下の証明では,Euler法とAscoli-Arzelàの定理を使って解を作ります.

なお,解の一意性は成り立ちません.
例えば,
dxdt=|x|,x(0)=0
を考えると,
x1(t)=0x2(t)={0if t<0t24if t0
で定義される二つの関数は,ともに解になっています.

定理10の証明

M=max(t,x)D|f(t,x)|とおく.
fは連続関数でDは有界閉集合なので最大値を持つ.
δ=min{r,ρM}とおく.
区間[t0,t0+δ)上の解が構成できれば,同様に(t0δ,t0]上の解も構成できる.
これらを繋いだものは区間(t0δ,t0+δ)上の解となって,局所解となる.

区間[t0,t0+δ]上で,刻み幅δnでEuler法を用いて近似解ξ(n)を作る.
このとき,i=0,,nに対して,時刻t0+iδnにおける近似値ξi(n)が定義されることは次のようにわかる.
fの定義域から出ていく可能性があることを懸念しています.)

刻み幅をhn=δnとおく.
また,i=0,,nに対して,時刻の区間の分点をti(n)=t0+ihnとおく.
ξ0(n)=ξ0である.
i=0,,n1に対して,ξi(n)が定義されていて,
(ti(n),ξi(n))Dとなっているとする.
このとき,
ξi+1(n)=ξi(n)+f(ti(n),ξi(n))hn
としてξi+1(n)が定まる.
このとき,
|ξi+1(n)ξ0||ξi+1(n)ξi(n)|++|ξ1(n)ξ0(n)|=|f(ti(n),ξi(n))|hn++|f(t0(n),ξ0(n))|hnM(i+1)hnMδρ
が成り立つから,
(ti+1(n),ξi+1(n))Dとなる.

また,{zRd|zξ0|ρ}は凸集合なので,折線で結んでもまたこの集合に含まれて,したがって,任意のt[t0,t0+δ]に対して,ξ(n)(t){zRd|zξ0|ρ}が成り立つ.
とくに,ξ(n)はwell-definedである.

このようにして,連続関数列{ξ(n)}nNが定義される.
任意のnN,任意のt[t0,t0+δ]に対して,
|ξ(n)(t)||ξ0|+ρ
が成り立つので,一様有界である.
また,折線の傾きはすべてM以下であるから,
任意のnN,任意のt,s[t0,t0+δ]に対して,
|ξ(n)(t)ξ(n)(s)|M|ts|
が成り立つ.
このことから,同程度連続であることが従う.

したがって,定理5(Ascoli-Arzelàの定理)より,ある部分列{ξ(k(n))}nNが存在して,連続関数ξに一様収束する.
この部分列を{ξ(n)}nNと書き直す.
これに応じて,刻み幅hn,時刻の区間の分点ti(n),近似値ξinも対応するものに書き直す.
ξが任意のt[t0,t0+δ]に対して
ξ(t)=ξ0+t0tf(s,ξ(s)) ds
を満たすことを示せば,ξ[t0,t0+δ)上の解となっていることがわかる.
t0においては片側微分係数がf(t0,ξ0)となるから,(t0δ,t0]上の解とつなぐと局所解が得られる.)

そのためには,任意のt[t0,t0+δ]に対して
limnξ(n)(t)=ξ0+t0tf(s,ξ(s)) ds
を示せば良い.

また,任意のnNに対して,tl(n)ttl+1(n)のとき,近似解は
ξ(n)(t)=ξ0+i=0l1ti(n)ti+1(n)f(ti(n),ξi(n)) ds+tl(n)tf(tl(n),ξl(n)) ds
と表されることに注意する.

t[t0,t0+δ]ε>0を任意とする.
fD上連続だから,一様連続であって,あるδ>0が存在して,
|su|+|xy|<δを満たす任意の(s,x),(u,y)Dに対して,
|f(s,x)f(u,y)|<ε/δ
が成り立つ.

{ξ(n)}nNξに一様収束するから,あるN1Nが存在して,任意のnN1に対して,
maxs[t0,t0+δ]|ξ(s)ξ(n)(s)|<δ/2
が成り立つ.
また,あるN2Nが存在して,任意のnN2に対して,
(M+1)hn<δ/2
が成り立つ.
N=max{N1,N2}とおく.
任意のnNに対して,任意のs[t0,t0+δ]について,
tl(n)stl+1(n)なる0l<k(n)をとれば,同程度連続を示したところで使った不等式を用いて,
|stl(n)|+|ξ(s)ξ(n)(tl(n))||stl(n)|+|ξ(s)ξ(n)(s)|+|ξ(n)(s)ξ(n)(tl(n))|<|stl(n)|+δ/2+M|stl(n)|δ/2+δ2=δ
がわかる.

そして,以上の不等式を用いて,
|ξ(n)(t)ξ0t0tf(s,ξ(s)) ds|=|i=0l1ti(n)ti+1(n)(f(ti(n),ξi(n))f(s,ξ(s))) ds+tl(n)t(f(tl(n),ξl(n))f(s,ξ(s))) ds|i=0l1ti(n)ti+1(n)|f(ti(n),ξi(n))f(s,ξ(s))| ds+tl(n)t|f(tl(n),ξl(n))f(s,ξ(s))| ds<i=0l1εδ(ti+1(n)ti(n))+εδ(ttl(n))=εδ(tt0)εδδ=ε

これは
limnξ(n)(t)=ξ0+t0tf(s,ξ(s)) ds
を意味しており,証明が終わる.

(証明終)

定理10の証明から,次のことがわかります.
解が欲しい区間を[t0δ,t0+δ]とします.
M=max(t,x)Df(t,x)としたときに,δmin{r,ρM}であればこの定理の証明が回りますが,それ以上欲張ると証明が回りません.)
この区間で刻み幅をδnとして,Euler法を使って近似解の列ξ(n)を作れば,適切に部分列をとることで厳密解の一つに一様収束します.
しかしこれは,ただ刻み幅を小さくすれば厳密解に収束していくことを意味するわけではありません.
実際に,
dxdt=|x|3/4x+tsinπt
に対して同じことを考えれば,収束しないことが示せるようです[2].

しかし,部分列の取り方は証明からはわからないので,大変不便です.
ここでさきほど考えたように,fの条件を少し強くして,Lipschitz連続とすると,Euler法で作った近似解は一様収束するようです[3](時間がなくて私は理解できておりません).
つまり,次が成り立ちます.

f:DRn,(t,x)f(t,x)をLipschitz連続関数とする.
このとき,次の微分方程式の初期値問題
dxdt=f(t,x),x(t0)=ξ0
に対して,Euler法によって作られる関数列は,厳密解(定理9が保証するように唯一つの解)に一様収束する.

つまり,fがLipschitz連続ならば,刻み幅を小さくすればするほど(誤差がなければ)より厳密解に近い解が得られるということを意味しています.
実際には計算機で計算することになるので,誤差が発生します.
さらに,刻み幅を小さくすればするほど,必要な計算回数も多くなって誤差が積み重なることになり,思うように誤差が小さくはならないと思います.

工学部で出てくる関数は多分大体Lipschitz連続なので,定理11を念頭に置いてEuler法を使えばOKです.
これが「Euler法に関するあまり役に立たない話」というタイトルにした理由で,自分はAscoli-Arzelàの定理に関係する話が書きたかったのと,さらに欲張って工学部っぽい話をしようとした結果Euler法の話をするに至りましたが,実用上は,前半とは無関係の定理11で十分だと思います(そしてこれにはAscoli-Arzelàの定理は一切関係ありません).

そしてさらにいうと,計算機で計算する上では刻み幅をいくらでも小さくするというのは無理なので,ある程度の誤差は諦めた上でどの程度誤差を小さくすることができるかというのが大事になってきます.
定理10はそのような評価には一切役立ちません.
ですが理論としてはとても大切だと思っています.

Euler法を実装したけど挙動がおかしいというときは,区間を欲張りすぎていないか,Lipschitz連続であるか,に注意してみてください.
というかRunge-Kutta法など,もっとよい数値解法を使うのが良いと思います.

最後に

結局役に立たない話が多かったですが,最後まで読んでいただきありがとうございます.

明日以降も 物工/計数 Advent Calendar 2022 をぜひお楽しみください.

参考文献

[1]
野口潤次郎, 複素解析概論, 裳華房, 1993
[2]
坂井秀隆, 常微分方程式, 東京大学出版, 2015
投稿日:2022129
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

うめ
うめ
2
394

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. はじめに
  2. 三角関数列の収束とか
  3. Ascoli-Arzelàの定理
  4. Euler法とAscoli-Arzelàの定理
  5. 最後に
  6. 参考文献