04 連続函数
黒木玄
2018-04-20～2019-04-03, 2023-06-22
Copyright 2018,2019,2023 Gen Kuroki
License: MIT https://opensource.org/licenses/MIT (https://opensource.org/licenses/MIT)
Repository: https://github.com/genkuroki/Calculus (https://github.com/genkuroki/Calculus)
このファイルは次の場所できれいに閲覧できる:
http://nbviewer.jupyter.org/github/genkuroki/Calculus/blob/master/04%20continous%20functions.ipynb(http://nbviewer.jupyter.org/github/genkuroki/Calculus/blob/master/04%20continous%20functions.ipynb)
https://genkuroki.github.io/documents/Calculus/04%20continous%20functions.pdf(https://genkuroki.github.io/documents/Calculus/04%20continous%20functions.pdf)
このファイルは Julia Box (https://juliabox.com) で利用できる.
自分のパソコンにJulia言語 (https://julialang.org/)をインストールしたい場合にはWindowsへのJulia言語のインストール (http://nbviewer.jupyter.org/gist/genkuroki/81de23edcae631a995e19a2ecf946a4f)
Julia v1.1.0 の Windows 8.1 へのインストール(https://nbviewer.jupyter.org/github/genkuroki/msfd28/blob/master/install.ipynb)
を参照せよ. 前者は古く, 後者の方が新しい.
論理的に完璧な説明をするつもりはない. 細部のいい加減な部分は自分で訂正・修正せよ.

目次
 1 連続函数
1.1 連続函数の定義
1.2 中間値の定理
1.3 不動点定理
1.4 閉区間上の実数値連続函数が最大最小を持つこと
 1.5 例
1.5.1 例1: コンパクト台を持つ滑らかな連続函数
1.5.2 例2: 無限に振動する不連続函数
1.5.3 例3: 無限に振動する連続函数
1.5.4 例4: Weierstrass函数
1.5.5 例5: 高木函数
 2 一様連続性
2.1 閉区間上の連続函数が一様連続であること
2.2 連続だが一様連続ではない函数の例
 3 一様収束
3.1 函数列の各点収束の定義
3.2 函数列の一様収束の定義
3.3 連続函数列の一様収束先も連続になること
3.4 Peano曲線

In [1]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

using Base.MathConstants
using Base64
using Printf
using Statistics
const e = ℯ
endof(a) = lastindex(a)linspace(start, stop, length) = range(start, stop, length=length)​
using Plots#gr(); ENV["PLOTS_TEST"] = "true"#clibrary(:colorcet)#clibrary(:misc)
default(fmt=:png)​function pngplot(P...; kwargs...)sleep(0.1)
pngfile = tempname() * ".png"
savefig(plot(P...; kwargs...), pngfile)showimg("image/png", pngfile)end
pngplot(; kwargs...) = pngplot(plot!(; kwargs...))​
showimg(mime, fn) = open(fn) do fbase64 = base64encode(f)display("text/html", """<img src="data:$mime;base64,$base64">""")
end​
using SymPy
using SpecialFunctions
using QuadGKIn [2]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# Override the Base.show definition of SymPy.jl:# https://github.com/JuliaPy/SymPy.jl/blob/29c5bfd1d10ac53014fa7fef468bc8deccadc2fc/src/​@eval SymPy function Base.show(io::IO, ::MIME"text/latex", x::SymbolicObject)
print(io, as_markdown("\\displaystyle " * sympy.latex(x, mode="plain", fold_short_fra
end@eval SymPy function Base.show(io::IO, ::MIME"text/latex", x::AbstractArray{Sym})
function toeqnarray(x::Vector{Sym})a = join(["\\displaystyle " * sympy.latex(x[i]) for i in 1:length(x)], "\\\\")"""\\left[ \\begin{array}{r}$a\\end{array} \\right]"""end
function toeqnarray(x::AbstractArray{Sym,2})sz = size(x)a = join([join("\\displaystyle " .* map(sympy.latex, x[i,:]), "&") for i in 1:sz"\\left[ \\begin{array}{" * repeat("r",sz[2]) * "}" * a * "\\end{array}\\right]"
end
print(io, as_markdown(toeqnarray(x)))
end

1 連続函数1.1 連続函数の定義
定義: 函数𝑓(𝑥) が 𝑥 = 𝑎 で連続であるとは, 𝑥 → 𝛼 のとき 𝑓(𝑥) → 𝑓(𝑎) が成立することであると定める.

𝜀𝛿函数 𝑓(𝑥) が 𝑥 = 𝑎 で連続であるとは次が成立していることである: 任意の 𝜀 > 0 に対して, ある 𝛿 > 0 が存在して,|𝑥 − 𝑎| < 𝛿 ならば |𝑓(𝑥) − 𝑓(𝑎)| < 𝜀 となる. □これは - のスタイルでは次のように言い直される.

定理: 以下の2つの条件は互いに同値である:

𝑓(𝑥) は 𝑥 = 𝑎 で連続である. (すなわち 𝑥 → 𝑎 のとき 𝑓(𝑥) → 𝑓(𝑎) となる.)(2) 数列 𝑥𝑛 が 𝑎 に収束するならば数列 𝑓(𝑥𝑛 ) は 𝑓(𝑎) に収束する. (すなわち 𝑥𝑛 → 𝑎 のとき 𝑓(𝑥𝑛 ) → 𝑓(𝑎) となる.)
証明: (1)ならば(2)を示そう. (1)を仮定し, 𝑥𝑛 は 𝑎 に収束する任意の数列であるとし, 𝜀 > 0 を任意に取る. (1)より, ある 𝛿 > 0が存在して, |𝑥 − 𝑎| < 𝛿 ならば |𝑓(𝑥) − 𝑓(𝑎)| < 𝜀 となる. 𝑥𝑛 → 𝑎 なのである番号 𝑁 で 𝑛 ≧ 𝑁 ならば |𝑥𝑛 − 𝑎| < 𝛿 とな
り, そのとき 𝑓(𝑥𝑛 ) − 𝑓(𝑎)| < 𝜀 となる. これで(1)から(2)が導かれることがわかった.
(1)

𝜀>0

(2)ならば(1)の対偶を示すために, (1)の否定を仮定する. すなわち, あるで次の条件を満たすものが存在すると仮定する:
任意のに対して, ある でとを満たすものが存在する. そのとき, 任意の正の整数 に対して, あるでとを満たすものが存在する. そのとき,は に収束しているが,

𝛿>0
𝑥 |𝑥 − 𝑎| < 𝛿 𝑓(𝑥) − 𝑓(𝑎)| ≧ 𝜀
𝑥𝑛 |𝑥𝑛 − 𝑎| < 1/𝑛 |𝑓(𝑥𝑛 ) − 𝑓(𝑎)| ≧ 𝜀

𝑥𝑛 𝑎

𝑛

1.2 中間値の定理

𝑓 は閉区間 [𝑎,𝑏] 上の実数値連続函数であるとする. このとき 𝑓(𝑎) と 𝑓(𝑏) のあいだにある任意の実数 𝛼 に対し𝜉 ∈ [𝑎,𝑏] で 𝑓(𝜉) = 𝛼 を満たすものが存在する. □補足: 𝑥 が 𝑎 と 𝑏 のあいだにあるとは 𝑎 ≦ 𝑥 ≦ 𝑏 または 𝑎 ≧ 𝑥 ≧ 𝑏 が成立していることだと定める. □注意: 中間値の定理において, 𝑓(𝑎) < 𝛼 < 𝑓(𝑏) または 𝑓(𝑎) > 𝛼 > 𝑓(𝑏) ならば 𝑓(𝜉) = 𝛼 をみたす 𝜉 ∈ [𝑎,𝑏] は 𝑎 < 𝜉 < 𝑏となるように取れる. □中間値の定理の証明: 𝑓(𝑥) の代わりに 𝑓(𝑥) − 𝛼 を考えることによって, 𝛼 = 0 の場合に証明すれば十分である. 必要なら 𝑓(𝑥)の代わりに −𝑓(𝑥) を考えることによって, 𝑓(𝑎) ≦ 0, 𝑓(𝑏) ≧ 0 の場合に証明すれば十分である. 以下, そのように仮定する.
(𝑎1 , 𝑏1 ) = (𝑎,𝑏) とおく. 𝑛 について帰納的に 𝑓(𝑎𝑛 ) ≦ 0 ≦ 𝑓(𝑏𝑛 ) を満たす (𝑎𝑛 , 𝑏𝑛 ) を次のように定めることができる.
𝑓((𝑎𝑛 + 𝑏𝑛 )/2) ≧ 0 ならば (𝑎𝑛+1 , 𝑏𝑛+1 ) = (𝑎𝑛+1 ,(𝑎𝑛 + 𝑏𝑛 )/2).
𝑓((𝑎𝑛 + 𝑏𝑛 )/2) < 0 ならば, (𝑎𝑛+1 , 𝑏𝑛+1 ) = ((𝑎𝑛 + 𝑏𝑛 )/2, 𝑏𝑛 ).
このとき, 𝑎1 ≦ 𝑎2 ≦ ⋯ , ⋯ ≦ 𝑏2 ≦ 𝑏1 でかつ |𝑎𝑛 − 𝑏𝑛 | = |𝑎 − 𝑏|/2𝑛−1 であることから, 𝑎𝑛 と 𝑏𝑛 は同一の値 𝜉 に収束する.
そのとき, 𝑓(𝑥) の連続性より 𝑓(𝑎𝑛 ) と 𝑓(𝑏𝑛 ) も同一の値 𝑓(𝜉) に収束し, 𝑓(𝑎𝑛 ) ≦ 0 ≦ 𝑓(𝑏𝑛 ) なのでその収束先は 0 でなければいけない. ゆえに 𝑓(𝜉) = 0. □注意: 上の証明法の二分法 (bisection method)と呼ぶことがある. 実際の数値計算でも利用可能な方法である. □中間値の定理:て, あるIn [3]:



1 function bisection(f, a, b; atol=eps(), maxiter=10^3)
2
f(a)*f(b) > 0 && return NaN
3aₙ, bₙ = a, b
4
k = 0
5
while abs(aₙ - bₙ) > atol
6k > maxiter && return NaN7
c = (aₙ+bₙ)/2
8
if f(bₙ)*f(c) ≥ 0
9aₙ, bₙ = aₙ, c
10
else
11
aₙ, bₙ = c, bₙ
12
end
13
k += 114
end
15
return (aₙ+bₙ)/2
16 endOut[3]: bisection (generic function with 1 method)In [4]:



1
2
3
4
5
6
7
8
9
10

f(x) = x^2 - 2@show ξ = bisection(f, 1, 2)@show √2@show round(f(ξ), digits=15)​
x = 1:0.005:2
plot(size=(400,250), legend=:topleft)
plot!(x, f.(x), label="y = x^2 - 2")
hline!([0], label="y = 0")vline!([ξ], label="x = $(round(ξ, digits=5))", ls=:dash)ξ = bisection(f, 1, 2) = 1.414213562373095√2 = 1.4142135623730951
round(f(ξ), digits = 15) = -0.0
Out[4]:

In [5]:



1
2
3
4
5
6
7
8
9

f(x) = cos(x) - x@show ξ = bisection(f, 0, 1)@show round(f(ξ), digits=15)​
x = 0:0.005:1
plot(size=(400,250))
plot!(x, f.(x), label="y = cos x - x")hline!([0], label="y = 0")vline!([ξ], label="x = $(round(ξ, digits=5))", ls=:dash)ξ = bisection(f, 0, 1) = 0.7390851332151606
round(f(ξ), digits = 15) = 0.0
Out[5]:

1.3 不動点定理[𝑎,𝑏]𝑓 に対して, ある 𝜉 ∈ [𝑎,𝑏] で 𝑓(𝜉) = 𝜉 を満たすものが存在する. (その𝜉 𝑓
証明: 𝑔(𝑥) = 𝑓(𝑥) − 𝑥 とおく. このとき 𝑔 は閉区間 [𝑎,𝑏] 上の実数値連続函数であり, 𝑔(𝑎) = 𝑓(𝑎) − 𝑎 ≧ 0 かつ
𝑔(𝑏) = 𝑓(𝑏) − 𝑏 ≦ 0 となり, 0 は 𝑔(𝑎) と 𝑔(𝑏) のあいだにある実数になる. ゆえに中間値の定理より, ある 𝜉 ∈ [𝑎,𝑏] で𝑔(𝜉) = 0 すなわち 𝑓(𝜉) = 𝜉 を満たすものが存在する. □補足: 以下の形の ℝ の部分集合を区間と呼ぶ:[𝑎,𝑏] = {𝑥 ∈ ℝ ∣ 𝑎 ≦ 𝑥 ≦ 𝑏},[𝑎,𝑏) = {𝑥 ∈ ℝ ∣ 𝑎 ≦ 𝑥 < 𝑏},(𝑎,𝑏] = {𝑥 ∈ ℝ ∣ 𝑎 < 𝑥 ≦ 𝑏},(𝑎,𝑏) = {𝑥 ∈ ℝ ∣ 𝑎 < 𝑥 < 𝑏}.
不動点定理: 閉区間
からそれ自身への連続写像
ような を の不動点と呼ぶ.)

[𝑎,𝑏] は閉区間と呼ばれ, (𝑎,𝑏) は開区間と呼ばれる. (−∞,𝑏] のように無限に長い区間を扱うこともある. □補足: 閉区間 [𝑎,𝑏] からそれ自身への写像とは 𝑥 ∈ [𝑎,𝑏] に 𝑓(𝑥) ∈ [𝑎,𝑏] を対応させる函数のことである. そのグラフ
𝐺 = {(𝑥,𝑓(𝑥)) ∣ 𝑎 ≦ 𝑥 ≦ 𝑏} は正方形 [𝑎,𝑏] × [𝑎,𝑏] = {(𝑥,𝑦) ∈ ℝ2 ∣ 𝑎 ≦ 𝑥,𝑦 ≦ 𝑏} に含まれる. □注意: 上の不動点定理は以下のように説明することもできる. 簡単のため [𝑎,𝑏] = [−1,1] の場合を考える. もしも 𝑓 の不動点が存在しなかったならば, すべての 𝑥 ∈ [−1,1] について 𝑓(𝑥) ≠ 𝑥 となる. ゆえに 𝑥 ∈ [−1,1] の連続函数 𝑔(𝑥) を𝑔(𝑥) = |𝑥𝑥 −− 𝑓(𝑥)𝑓(𝑥)|と定めることができる. すべての 𝑥 ∈ [−1,1] について 𝑔(𝑥) は ±1 のどちらかになり, −1 < 𝑓(−1) なので 𝑔(−1) = −1 となり, 1 > 𝑓(1) なので 𝑔(1) = 1 となる. しかし, そのような [−1,1] 上の連続函数は存在するはずがないので, 不動点が存在するはずである. □In [6]:



1
2
3
4
5
6
7
8
9

f(x) = 0.6 + 0.4x - 0.8x^2 + 0.3sin(10x-0.5)
ξ = bisection(x->f(x)-x, 0, 1)
x = 0:0.01:1
plot(size=(400,400), aspect_ration=1, legend=false)plot!(xlim=(0,1), ylim=(0,1))
plot!(x, f.(x), lw=1.5)
plot!([0,1], [0,1], color=:black)hline!([ξ], ls=:dash, color=:red)vline!([ξ], ls=:dash, color=:red)Out[6]:

注意: 上の易しい不動点定理はBrouwerの不動点定理の次元1の特別な場合である.
Brouwerの不動点定理:

𝑛 次元閉円盤□𝐷 = {(𝑥1 ,…, 𝑥𝑛 ) ∈ ℝ𝑛 ∣ 𝑥21 + ⋯ + 𝑥2𝑛 ≦ 1}からそれ自身への連続写像 𝑓 は不動点を持つ. すなわち, ある 𝜉 ∈ 𝐷 で 𝑓(𝜉) = 𝜉 を満たすものが存在する. □このノート群の内容を逸脱する話題なので証明 (https://www.google.co.jp/search?
q=Brouwer%E3%81%AE%E4%B8%8D%E5%8B%95%E7%82%B9%E5%AE%9A%E7%90%86+%E8%A8%BC%E6%98%8E)には触れない. 証明する前に直観的にどこまでこの定理が「明らか」であるかについて考えてみた方がよい.
研究課題:

□

𝑛 = 2 の場合にBrouwerの不動点定理が直観的には当然成立するべき結果であることがわかるような説明を見付けよ.

ヒント: 上にある注意の方法をこの場合に適用してみよ.

□1.4 閉区間上の実数値連続函数が最大最小を持つこと
定理: 実数の閉区間上の実数値連続函数は最大値と最小値を持つ.

𝑓

𝐼 = [𝑎,𝑏] 上の実数値連続函数であると仮定する. 𝑓 を −𝑓 で置き換えることによって, 𝑓 が最大値を持つこ

証明: は閉区間とを示せば十分である.

𝑓𝐼𝑓𝑎𝑛 ∈ 𝐼 𝑓(𝑎𝑛 ) ≧ 𝑛𝛼𝑎𝑛𝑎𝑘𝑎𝑘 ∈ 𝐼𝑎 ≦ 𝑎𝑘 ≦ 𝑏 𝑎 ≦ 𝛼 ≦ 𝑏
𝛼∈𝐼𝑓𝑛 → ∞ 𝑓(𝑎𝑘 ) → 𝑓(𝛼)𝑓(𝑎𝑘 ) → ∞𝑓
𝐼𝑎𝑛
次に, 𝑓 が閉区間 𝐼 上で最大値を持つことを示そう. {𝑓(𝑥) ∣ 𝑥 ∈ 𝐼 } は上に有界なので, 実数の連続性より, それは最小の上界を持つ. その最小上界を 𝑀 と書くことにする. 𝑀 が {𝑓(𝑥) ∣ 𝑥 ∈ 𝐼 } の最小上界であることより, 𝑛 = 1,2,… に対して,
𝑀 − 1𝑛 ≦ 𝑓(𝑥𝑛 ) ≦ 𝑀 を満たす 𝑥𝑛 ∈ 𝐼 が存在する. そのとき, 𝑓(𝑥𝑛 ) は 𝑀 に収束する. Bolzano-Weierstrassの定理より, 𝑥𝑛のある部分列 𝑥𝑙𝑛 である 𝛽 ∈ 𝐼 に収束するものが存在する. このとき,
𝑓(𝛽) = 𝑛→∞lim 𝑓(𝑥𝑙𝑛) = 𝑀.
これで 𝑓 が 𝐼 上で最大値 𝑀 を持つことがわかった □定義(supノルム): 集合 𝑋 上の函数で |𝑓(𝑥)| が上に有界なものに対して,‖𝑓 ‖∞ = 𝑥∈𝑋
sup |𝑓(𝑥)|を 𝑓 のsupノルムと呼ぶ. □閉区間 [𝑎,𝑏] 上の連続函数 𝑓(𝑥) に対して, |𝑓(𝑥)| も閉区間 [𝑎,𝑏] 上の連続函数になるので, |𝑓(𝑥)| は最大値を持つ. ゆえに
𝑓(𝑥) のsupノルムも定義され,‖𝑓 ‖∞ = 𝑎≦𝑥≦𝑏
sup |𝑓(𝑥)| = 𝑎≦𝑥≦𝑏
max |𝑓(𝑥)|まず, が閉区間 上で有界であることを示そう. もしも が有界でないならばあるでを満たすものが存在する. Bolzano-Weierstrassの定理より,の部分列 𝑛 である実数 に収束するものが存在する. 𝑛
すなわち
より
すなわち
であることもわかる.
の連続性より,ででなればいけ𝑛𝑛
ないが,の取り方より,となる.
これは矛盾である.
ゆえに,は閉区間上で有界でなければいけない.
𝑛が成立する.

‖𝑓 − 𝑔‖∞ は函数 𝑓,𝑔 の違いの大きさの指標としてよく使われる.
問題: 適当に 𝜀 > 0 と函数 𝜑 を与え, ‖𝑓 − 𝜑‖∞ < 𝜀 を満たす函数 𝑓 のグラフがどのような領域に含まれるかを図示せよ. □函数の差のsupノルム

次のセルを見よ.
In [7]:



1
2
3
4
5
6
7

φ(x) = sin(x) - 0.5x + 0.1x^2x = -2.5:0.02:3.5
ε = 0.3
plot(size=(500, 350))
plot!(x, φ.(x), label="y = phi(x)", color=:black, lw=2)
plot!(x, φ.(x).+ε, label="phi(x) - eps < y < phi(x)+eps", color=:red, ls=:dash, fill=(:pplot!(x, φ.(x).-ε, label="", color=:red, ls=:dash, fill=(:pink, 0.2, φ.(x)))

Out[7]:

問題: その絶対値が上に有界な集合

𝑋 上の函数達 𝑓,𝑔 について以下が成立することを示せ:‖𝑓 + 𝑔‖∞ ≦ ‖𝑓 ‖∞ + ‖𝑔‖∞ .
(2) 数 𝛼 について ‖𝛼𝑓 ‖∞ = |𝛼|‖𝑓 ‖∞ .
(3) ‖𝑓 ‖∞ = 0 ならば 𝑓 は恒等的に 0.
証明: (1) 𝐴,𝐵 をそれぞれ |𝑓(𝑥)| , |𝑔(𝑥)| の上界だとすると, |𝑓(𝑥) + 𝑔(𝑥)| ≦ |𝑓(𝑥)| + |𝑔(𝑥)| ≦ 𝐴 + 𝐵 . そして上限は上界の最小値だったので, ‖𝑓 + 𝑔‖∞ ≦ sup𝑥∈𝑋 |𝑓(𝑥)| + sup𝑥∈𝑋 |𝑔(𝑥)| = ‖𝑓 ‖∞ + ‖𝑔‖∞ .
(2) |𝛼𝑓(𝑥)| = |𝛼||𝑓(𝑥)| より, それらの上限は等しい. すなわち, ‖𝛼𝑓 ‖∞ = |𝛼|‖𝑓 ‖∞ .
(1)

(3)
て

‖𝑓 ‖∞ = sup𝑥∈𝑋 |𝑓(𝑥)| = 0 であると仮定する. このとき, |𝑓(𝑥)| の上界の最小値は 0 である. これは任意の 𝑥 ∈ 𝑋 につい|𝑓(𝑥)| ≦ 0 が成立することを意味する. ゆえに 𝑓 は恒等的に 0 になる. □参考(

𝐿1 ノルム): 閉区間 [𝑎,𝑏] 上の 𝐿1 ノルム ‖𝑓‖1 は次のように定義される:𝑏‖𝑓 ‖1 = ∫𝑎 |𝑓(𝑥)|𝑑𝑥.

これも函数の違いを測るためによく使われる. 次のセルを見よ. 塗りつぶされている部分の面積がIn [8]:



1
2
3
4
5
6
7
8
9
10

‖𝑓 − 𝑔‖1 に等しい. □f(x) = sin(x) - 0.5x + 0.1x^2g(x) = cos(x) - 0.5 + 0.1x^3
plot(size=(450, 280), legend=:top)
x = -2.5:0.02:3.5
plot!(x, f.(x), color=:blue, label="f(x)")
plot!(x, g.(x), color=:red, label="g(x)")
x = -2.0:0.02:3.0
plot!(x, g.(x), color=:red, fill=(0.1, f.(x)), label="")vline!([minimum(x)], color=:black, ls=:dash,label="x=a")vline!([maximum(x)], color=:black, ls=:dashdot, label="x=b")Out[8]:[𝑎,𝑏] 上の連続函数 𝑓,𝑔 について以下が成立することを示せ:(1) ‖𝑓 + 𝑔‖∞ ≦ ‖𝑓 ‖1 + ‖𝑔‖∞ .
(2) 数 𝛼 について ‖𝛼𝑓 ‖1 = |𝛼|‖𝑓 ‖1 .
(3) ‖𝑓 ‖1 = 0 ならば 𝑓 は恒等的に 0.
解答例: (1) |𝑓(𝑥) + 𝑔(𝑥)| ≦ |𝑓(𝑥)| + |𝑔(𝑥)| なので両辺を積分することによって ‖𝑓 + 𝑔‖1 ≦ ‖𝑓 ‖1 + ‖𝑔‖1 を得る.
(2) |𝛼𝑓(𝑥)| = |𝛼||𝑓(𝑥)| の両辺を積分することによって ‖𝛼𝑓 ‖1 = |𝛼|‖𝑓 ‖1 を得る.
(3) 対偶を示すために, ある 𝑥0 ∈ [𝑎,𝑏] で 𝑓(𝑥0 ) ≠ 0 を満たすものが存在すると仮定する. 𝑓(𝑥) は連続なので, ある 𝛿 > 0 が存在して, 𝑥 ∈ [𝑎,𝑏] かつ |𝑥 − 𝑥0 | ≦ 𝛿 ならば ≦ |𝑓(𝑥) − 𝑓(𝑥0 )| ≦ |𝑓(𝑥0 )|/2 となり,|𝑓(𝑥)| = |𝑓(𝑥0 ) − (𝑓(𝑥0 ) − 𝑓(𝑥))| ≧ |𝑓(𝑥0 )| − |𝑓(𝑥0 ) − 𝑓(𝑥)| ≧ |𝑓(𝑥0 )| − |𝑓(𝑥0 )|/2 = |𝑓(𝑥0 )|/2 となる. ゆえに,𝐴 = max{𝑎, 𝑥0 − 𝛿}, 𝐵 = min{𝑎, 𝑥0 + 𝛿} とおくと,𝑏
𝐵𝐵− 𝐴) > 0.
‖𝑓 ‖1 = ∫𝑎 |𝑓(𝑥)|𝑑𝑥 = ∫𝐴 |𝑓(𝑥)|𝑑𝑥 ≧ ∫𝐴 |𝑓(2𝑥0 )| 𝑑𝑥 ≧ |𝑓(𝑥0 )|(𝐵2
これで(3)の対偶が証明された. □注意: 上の解答例の(3)の証明は, 単に 𝑓(𝑥0 ) ≠ 0 ならば 𝑥0 の近くの 𝑥 について |𝑓(𝑥)| > 0 となるので, |𝑓(𝑥)| を積分すると
0 より大きくなることを示しているに過ぎない. 実際に書かれた証明はややこしいが, やっていることはシンプルである. 数学的問題: 閉区間に詳しく書かれた証明はこういうことになっている場合が実に多い. 直観レベルでは非常にシンプルなことしかやっていなくても, 順番に丁寧に書いたせいで複雑に見えてしまうことがよくある. そのような証明を読むときには, 「シンプルだが雑な直観をもとにして, どのようにして隙の無い証明を書きあげればよいか」という発想で証明を自力で再構成してみるのがよい. 結局のところ他人が書いた証明は他人にとってわかりやすいだけで, 自分にとってはわかりにくい. 自分にとってわかり易い証明は自分で書くしかない.

□
まとめ: 閉区間 [𝑎,𝑏] 上の連続函数 𝑓,𝑔 に対して, 差のsupノルム ‖𝑓 − 𝑔‖ は 𝑓,𝑔 の同一の 𝑥 における値の差の最大値に等しく, 差の𝐿1 ノルム ‖𝑓 − 𝑔‖1 は 𝑓,𝑔 のグラフに挟まれている部分の面積に等しい. このように函数の違いの大きさを測る方法
は複数存在する. □1.5 例
1.5.1 例1: コンパクト台を持つ滑らかな連続函数函数

𝑓(𝑥) = { 0𝑒−1/𝑥 (𝑥(𝑥 ≦> 0)0)は 𝑥 ↘ 0 のとき 𝑒−1/𝑥 → 0 なので連続函数である. ここで 𝑥 ↘ 0 は 𝑥 が上から(正の値のまま) 0 に近付くことを意味している(𝑥 → +0 と書くこともある). 𝑓(𝑥) は任意有限回微分可能である(そのとき 𝐶 ∞ 函数であるという).
𝑒−1/𝑥 → 0 となることを示せ. □問題: 𝑛 が非負の整数のとき, 𝑥 ↘ 0 のとき
𝑥𝑛
𝑡𝑛 → 0 となることと同値である. しかし, それは指数函数が多項式函証明: 𝑡 = 1/𝑥 とおくと, 示すべきことは, 𝑡 → ∞ のとき
𝑒𝑡
数より速く増加することを意味しているので, 成立することがすでにわかっている. □𝑒−1/𝑥 に 𝑥 の多項式をかけた形になる. そのことより, 𝑥 ↘ 0 のとき 𝑒−1/𝑥 の 𝑛 階の導函数も 0
注意: 𝑒−1/𝑥 の 𝑛 階の導函数は𝑥𝑛に収束することがわかる. □In [9]:

Out[9]:

In [10]:1 x = symbols("x")
2 diffexpneginvx(n) = diff(exp(-1/x), x, n)
3 [diffexpneginvx(n) for n in 0:3]
− 1𝑥 𝑒
− 1𝑥 𝑒
𝑥21 
 (−2 + 1𝑥 ) 𝑒− 𝑥 
𝑥3 1 
 (6 − 6𝑥 + 𝑥12 ) 𝑒− 𝑥 
𝑥4
1
2
3
4
5
6
7
8
9
10

f(x) = x > 0 ? exp(-1/x) : zero(x)g(x) = x > 0 ? exp(-1/x)/x^2 : zero(x)​p1 = plot(ylims=(-0.1, 1.0), legend=:topleft)
plot!(f, -10, 20, label="f(x)")​
p2 = plot(ylims=(-0.1, 0.6), legend=:topright)
plot!(g, -10, 20, label="df(x)/dx")​
plot(p1, p2, size=(700,200))

Out[10]:問題:

𝑥 ≦ 0 のとき最小値 0 になり, 𝑥 ≧ 1 のとき最大値 1 になる函数で任意有限回微分可能なものが存在することを示せ.

解答例: 函数𝑓(𝑥) = { 0exp(− 1 + 1 ) (𝑥(0 <≦ 𝑥0 or< 1)1 ≧ 𝑥)
𝑥 𝑥−1
1
1
は任意有限回微分可能である. 𝑍 = ∫0 𝑓(𝑥)𝑑𝑥 とおき, 𝑔(𝑥) = 𝑓(𝑥)/𝑍 とおくと, ∫0 𝑔(𝑥)𝑑𝑥 = 1 となる. このとき, 函数

𝑥ℎ(𝑥) = ∫−∞ 𝑔(𝑡)𝑑𝑡
In [11]:



1
2
3
4
5
6
7
8
9
10
11
12

f(x) = 0 < x < 1 ? exp(-1/x+1/(x-1)) : zero(x)@show Z, err = quadgk(f, 0, 1) # = ∫_0^1 f(x) dx, errorg(x) = f(x)/Zh(x) = quadgk(g, -1, x)[1] # = ∫_{-1}^x g(t) dt​
p1 = plot(legend=:topleft, ylims=(-0.1,2.7))
plot!(g, -1, 2, label="g(x)")​
p2 = plot(legend=:topleft, ylims=(-0.1, 1.1))
plot!(h, -1, 2, label="h(x)")​
plot(p1, p2, size=(700,200))(Z, err) = quadgk(f, 0, 1) = (0.007029858406609659, 3.235782792341532e-11)
Out[11]:

𝑥≦0

問題:
または
することを示せ.

4 ≦ 𝑥 のとき最小値 0 になり, 1 ≦ 𝑥 ≦ 3 のとき最大値 1 になる函数で任意有限回微分可能なものが存在ℎ(𝑥) を用いて, 函数 𝜙(𝑥) を𝜙(𝑥) = ℎ(𝑥)ℎ(4 − 𝑥)と定めると条件を満たしている. □解答例: 上の問題の函数

In [12]:



1
2
3
4

φ(x) = h(x)*h(4-x)​
plot(size=(400, 200), ylims=(-0.1, 1.1))
plot!(φ, -1, 5, label="phi(x)")

Out[12]:

1.5.2 例2: 無限に振動する不連続函数
函数(𝑥 ≠ 0)𝑓(𝑥) = { sin(1/𝑥)0(𝑥 = 0)は 𝑥 = 0 で不連続である. なぜならば 𝑥 → 0 のとき 𝑓(𝑥) は振幅を保ったまま無限に振動するからである.

In [13]:

1
2
3
4
5
6
7
8
9



f(x) = x == 0 ? 0 : sin(1/x)​
p1 = plot(size=(400, 250), xlabel="x", ylabel="y")plot!(f, -1.0, 1.0, ylims=(-1.2, 2.0), label="y = sin(1/x)")​p2 = plot(size=(400, 250), xlabel="x", ylabel="y")plot!(f, -0.1, 0.1, ylims=(-1.2, 2.0), label="y = sin(1/x)")​plot(p1, p2, size=(700, 250))

Out[13]:

1.5.3 例3: 無限に振動する連続函数
函数

は
In [14]:(𝑥 ≠ 0)𝑔(𝑥) = { 𝑥sin(1/𝑥)0(𝑥 = 0)𝑥 → 0 のとき無限に振動しながら 0 に収束するので連続である.
1
2
3
4
5
6
7
8
9

f(x) = x == 0 ? 0 : x*sin(1/x)​
p1 = plot(size=(400, 250), xlabel="x", ylabel="y")plot!(f, -3, 3, ylims=(-0.4, 1.5), label="y = x sin(1/x)")​p2 = plot(size=(400, 250), xlabel="x", ylabel="y")plot!(f, -0.3, 0.3, ylims=(-0.25, 0.3), label="y = x sin(1/x)")​plot(p1, p2, size=(700, 250))

Out[14]:

1.5.4 例4: Weierstrass函数

0 < 𝑎 < 1 について, 函数∞

𝐹(𝑥) = ∑ 𝑎𝑛 cos(𝑏𝑛 𝜋𝑥)𝑛=0は連続函数であり, Weierstrass 函数と呼ばれる.
られている.

𝑏 が正の奇数であり, 𝑎𝑏 > 1 + 3𝜋/2 のとき至るところ微分不可能なことが知ワイエルシュトラス関数 - Wikipedia(https://ja.wikipedia.org/wiki/%E3%83%AF%E3%82%A4%E3%82%A8%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%8

注意: 一般に, 区間

𝐼 上の連続函数列 𝑓𝑛 (𝑥) について, 𝑥 によらない非負実数列 𝑀𝑛 で∞
|𝑓𝑛 (𝑥)| ≦ 𝑀𝑛 (𝑥 ∈ 𝐼), ∑ 𝑀𝑛 < ∞𝑛=1

を満たしているならば,∞

𝐹(𝑥) = ∑ 𝑓𝑛 (𝑥) (𝑥 ∈ 𝐼)
𝑛=1

で定義される函数

𝐹(𝑥) は 𝐼 上の連続函数になる. このノートの一様種速の節を参照せよ. □In [15]:

1 struct WeierstrassFunction{R<:Real, S<:Integer, T<:Integer} <: Function
2
a::R; b::S; N::T
3 end
4 (F::WeierstrassFunction)(x) = sum(n->F.a^n*cos(F.b^n*π*x), 0:F.N)

In [16]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14

F = WeierstrassFunction(0.6, 13, 100)@show F.a*F.b, 1+3π/2​
p1 = plot(legend=false, titlefontsize=11)
plot!(title="Weierstrass function: a = $(F.a), b = $(F.b)")
plot!(size=(600, 420), xlabel="x", ylabel="y")plot!(F, -2, 2)​
p2 = plot(legend=false, titlefontsize=11)
plot!(title="Weierstrass function: a = $(F.a), b = $(F.b)")
plot!(size=(600, 420), xlabel="x", ylabel="y")plot!(F, -2/F.b, 2/F.b)​plot(p1, p2, size=(700, 250))(F.a * F.b, 1 + (3π) / 2) = (7.8, 5.71238898038469)
Out[16]:

In [17]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14

F = WeierstrassFunction(0.85, 7, 100)@show F.a*F.b, 1+3π/2​
p1 = plot(legend=false, titlefontsize=11)
plot!(title="Weierstrass function: a = $(F.a), b = $(F.b)")
plot!(size=(600, 420), xlabel="x", ylabel="y")plot!(F, -2, 2)​
p2 = plot(legend=false, titlefontsize=11)
plot!(title="Weierstrass function: a = $(F.a), b = $(F.b)")
plot!(size=(600, 420), xlabel="x", ylabel="y")plot!(F, -2/F.b, 2/F.b)​plot(p1, p2, size=(700, 250))(F.a * F.b, 1 + (3π) / 2) = (5.95, 5.71238898038469)
Out[17]:

In [18]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14

F = WeierstrassFunction(1/4, 3, 100)@show F.a*F.b, 1+3π/2​
p1 = plot(legend=false, titlefontsize=11)
plot!(title="Weierstrass function: a = $(F.a), b = $(F.b)")
plot!(size=(600, 420), xlabel="x", ylabel="y")plot!(F, -2, 2)​
p2 = plot(legend=false, titlefontsize=11)
plot!(title="Weierstrass function: a = $(F.a), b = $(F.b)")
plot!(size=(600, 420), xlabel="x", ylabel="y")plot!(F, -2/F.b, 2/F.b)​plot(p1, p2, size=(700, 250))(F.a * F.b, 1 + (3π) / 2) = (0.75, 5.71238898038469)
Out[18]:1.5.5 例5: 高木函数

0 < 𝑤 < 1 について∞

𝐹(𝑥) = ∑ 𝑤𝑛 𝑠(2𝑛 𝑥), 𝑠(𝑥) = min𝑘∈ℤ |𝑥 − 𝑘|𝑛=0で定義される函数

𝐹(𝑥) は連続函数である. 𝑤 = 1/2 のとき 𝐹(𝑥) は高木函数と呼ばれる.

In [19]:

1 seesaw(x) = abs(x - round(x))
2 plot(seesaw, size=(400, 250), ylims=(-0.1, 0.7), label="seesaw(x)")

Out[19]:In [20]:

1 struct TakagiFunction{R<:Real, T<:Integer} <: Function2
w::R; N::T
3 end
4 (F::TakagiFunction)(x) = sum(n->F.w^n*seesaw(2^n*x), 0:F.N)

In [21]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Out[21]:

F = TakagiFunction(0.5, 100)​
p1 = plot(legend=false, titlefontsize=11)
plot!(title="Takagi function: w = $(F.w)")
plot!(size=(600, 420), xlabel="x", ylabel="y")x = 0:0.001:1
plot!(x, F.(x))​
p2 = plot(legend=false, titlefontsize=11)
plot!(title="Takagi function: w = $(F.w)")
plot!(size=(600, 420), xlabel="x", ylabel="y")x = 0.25:0.00025:0.50
plot!(x, F.(x))​
plot(p1, p2, size=(700, 250))

In [22]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

F = TakagiFunction(0.7, 100)​
p1 = plot(legend=false, titlefontsize=11)
plot!(title="Takagi function: w = $(F.w)")
plot!(size=(600, 420), xlabel="x", ylabel="y")x = 0:0.001:1
plot!(x, F.(x))​
p2 = plot(legend=false, titlefontsize=11)
plot!(title="Takagi function: w = $(F.w)")
plot!(size=(600, 420), xlabel="x", ylabel="y")x = 0.250:0.00025:0.50
plot!(x, F.(x))​
plot(p1, p2, size=(700, 250))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

F = TakagiFunction(1/4, 100)​
p1 = plot(legend=false, titlefontsize=11)
plot!(title="Takagi function: w = $(F.w)")
plot!(size=(600, 420), xlabel="x", ylabel="y")x = 0:0.001:1
plot!(x, F.(x))​
p2 = plot(legend=false, titlefontsize=11)
plot!(title="y = x(1-x)")
plot!(size=(600, 420), xlabel="x", ylabel="y")x = 0:0.001:1
plot!(x, @.(x*(1-x)))​plot(p1, p2, size=(700, 250))

Out[22]:

In [23]:

Out[23]:2 一様連続性

𝑓(𝑥) が 𝑥 = 𝑎 で連続であるとは, 𝑥 → 𝑎 のとき 𝑓(𝑥) → 𝑓(𝑎) となることであった. 区間 𝐼 上で定義された函数 𝑓(𝑥) が連続であるとはすべての 𝑥 = 𝑎 ∈ 𝐼 で 𝑓(𝑥) が連続なことであると定める.
しかし, 一般に, 連続な 𝑓(𝑥) について, 各 𝑎 ∈ 𝐼 ごとに 𝑥 → 𝑎 のときの 𝑓(𝑥) → 𝑓(𝑎) の「収束の速さ」は一般に異なる.
𝑥 → 𝑎 のときの 𝑓(𝑥) → 𝑓(𝑎) の「収束の速さ」がすべての 𝑎 ∈ 𝐼 について同時に上からおさえられるとき, 𝑓(𝑥) は 𝐼 上で一様連続であるという.

正確には一様連続性は次のように定義される.

𝐼 上の函数 𝑓 は 𝐼 上で一様連続であるとは, 任意に 𝜀 > 0 を与えたとき, ある 𝛿 > 0 が存在して, 任意の 𝑎,𝑥 ∈ 𝐼 につい|𝑥 − 𝑎| < 𝛿 ならば |𝑓(𝑥) − 𝑓(𝑎)| < 𝜀 が成立することである. □𝑥 → 𝑎 のとき 𝑓(𝑥) → 𝑓(𝑎) が成立するということは, 𝑥 を 𝑎 に近付けることによって 𝑓(𝑎) を 𝑓(𝑥) でいくらでも近似できるということである. 𝑥 → 𝑎 のとき 𝑓(𝑥) → 𝑓(𝑎) であるということは, 許される誤差 𝜀 > 0 を与えたとき, ある 𝛿 > 0 が存在して, 𝑓(𝑥) と 𝑓(𝑎) の違いを 𝜀 未満におさえるためには 𝑥 と 𝑎 の違いを 𝛿 未満におさえればよいということである.
単なる連続性の定義では 𝛿 の取り方は各 𝑎 ごとに違っていてもよい. 𝛿 を小さく取らなければいけない 𝑎 においては 𝑥 → 𝑎 のときの 𝑓(𝑥) → 𝑓(𝑎) の「収束の速さ」は「遅い」ということである.
一様連続の定義は, すべての 𝑎 について共通の 𝛿 > 0 を選べることを意味している(すなわち 𝛿 > 0 は 𝜀 > 0 に依存するが,定義:て2.1 閉区間上の連続函数が一様連続であること□
証明: 𝑓 は閉区間 𝐼 上の連続函数であるとし, 𝜀 > 0 であるとする. このとき, 任意の 𝑥 ∈ 𝐼 に対して, ある 𝛿𝑥 > 0 が存在して,𝑦 ∈ 𝐼 かつ |𝑦 − 𝑥| < 𝛿𝑥 ならば |𝑓(𝑦) − 𝑓(𝑥)| < 𝜀2 となる. 𝑈𝑥 = (𝑥 − 𝛿2𝑥 ,𝑥 + 𝛿2𝑥 ) とおくと, 𝑈𝑥 達は 𝐼 を覆う. ゆえ
定理: 閉区間上の連続函数は一様連続である.

に, 閉区間に関するHeine-Borelの定理(http://nbviewer.jupyter.org/github/genkuroki/Calculus/blob/master/01%20convergence.ipynb#閉区間に関するHeine-Borelの定理)

𝑥1 ,…, 𝑥𝑟 ∈ 𝐼 で 𝑈𝑥1,…, 𝑈𝑥𝑟 で 𝐼 を覆うものが存在する. 𝛿 = min{ 𝛿21 ,…, 𝛿2𝑟 } とおき, 𝑎,𝑥 ∈ 𝐼 かつ
|𝑥 − 𝑎| < 𝛿 と仮定する. 𝑎 はある 𝑈𝑥𝑖 に含まれるので, |𝑎 − 𝑥𝑖 | < 𝛿2𝑥𝑖 < 𝛿𝑥𝑖 となり,|𝑥 − 𝑥𝑖 | ≦ |𝑥 − 𝑎| + |𝑎 − 𝑥𝑖 | < 𝛿 + 𝛿2𝑥𝑖 ≦ 𝛿2𝑥𝑖 + 𝛿2𝑥𝑖 = 𝛿𝑥𝑖
より, 有限個のとなるので,|𝑓(𝑥) − 𝑓(𝑎)| ≦ |𝑓(𝑥) − 𝑓(𝑥𝑖 )| + |𝑓(𝑥𝑖 ) − 𝑓(𝑎)| < 𝜀2 + 𝜀2 = 𝜀.
これで 𝑓 が一様連続であることが示された. □注意: 閉区間上の函数については, 連続函数と一様連続函数を区別しなくてもよい. □問題: ℝ 上の連続函数 𝑓(𝑥) で |𝑥| → ∞ のとき 𝑓(𝑥) → 0 となるものが一様連続になることを示せ.
𝜀と
解答例: 𝜀 > 0 を任意に取る. |𝑥| → ∞ のとき 𝑓(𝑥) → 0 となるで, ある 𝑅 > 0 が存在して, |𝑥| ≧ 𝑅 ならば |𝑓(𝑥)| <2
なる. 閉区間 [−3𝑅,3𝑅] 上で連続函数 𝑓(𝑥) は一様連続になるので, ある 𝛿 > 0 が存在して, |𝑥|,|𝑦| ≦ 3𝑅 かつ |𝑥 − 𝑦| < 𝛿
ならば |𝑓(𝑥) − 𝑓(𝑦)| < 𝜀 となる. このとき, 実数 𝑥,𝑦 が |𝑥 − 𝑦| < min{𝛿,𝑅} を満たしているならば, |𝑥| ≦ 2𝑅 のとき,
|𝑦| ≦ 𝑅, |𝑥 − 𝑦| < 𝛿 となるので, |𝑓(𝑥) − 𝑓(𝑦)| < 𝜀 となり, |𝑥| > 2𝑅 のとき, |𝑦| ≧ 𝑅 となるので,|𝑓(𝑥) − 𝑓(𝑦)| ≦ |𝑓(𝑥)| + |𝑓(𝑦)| < 𝜀2 + 𝜀2 = 𝜀となる. これで, 𝑓(𝑥) が ℝ 全体で一様連続であることがわかった. □2.2 連続だが一様連続ではない函数の例

𝑥 > 0 の連続函数 𝑓(𝑥) = 1/𝑥 は区間 (0,1] 上では一様連続ではないことを示せ.
解答例: 図を描けば, 𝜀 > 0 と 𝑎 > 0 について,𝑥 > 0, |𝑥 − 𝑎| < 𝛿 ⟹ |𝑓(𝑥) − 𝑓(𝑎)| < 𝜀
問題:

すなわち

かつ

𝛿 > 0 となるためには,(∗)

𝑥 > 0, 𝑎 − 𝛿 < 𝑥 < 𝑎 + 𝛿 ⟹ 1𝑎 − 𝜀 < 𝑥1 < 1𝑎 + 𝜀2𝛿 ≦ 𝑎 − 1/𝑎1+ 𝜀 = 1 𝑎+ 𝜀𝑎𝜀 < 𝑎2 𝜀でなければいけないことがわかる. したがって 𝑎 > 0 を小さくすれば 𝛿 > 0 はいくらでも小さくなる. ゆえに 𝑎 と無関係に(∗ )を満たす 𝛿 > 0 を取ることは不可能である. つまり 𝑓(𝑥) は (0,1] 上で一様連続ではない. □問題: 任意に与えられた 𝑟 > 0 について, 𝑓(𝑥) = 1/𝑥 は区間 [𝑟,∞) 上で一様連続であることを示せ.

𝜀 > 0 であるとする. 𝑎2 𝜀/(1 + 𝑎𝜀) は 𝑎 について単調増加函数なので, 𝑎 が [𝑟,∞) 内を動くとき, その最小値は2𝑟 𝜀/(1 + 𝑟𝜀) になる. それを 𝛿 とおけばすべての 𝑎 ∈ [𝑟,∞) について同時に (∗) が成立する. これで 𝑓(𝑥) = 1/𝑥 が [𝑟,∞) 上
解答例:

一様連続であることがわかった.

□𝐼

注意: 微分可能函数については, 区間 上でのグラフの傾きが幾らでも大きくなる函数は上でのグラフの傾きに上限がある場合には一様連続になる.

𝐼
In [24]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

□

𝐼 上で一様連続ではなくなるが, 区間

f(x) = 1/xx = 0.1:0.001:1​
ε = 0.7​
plot(xlims=(0,1), ylims=(0,10), size=(500, 350))
plot!(x, f.(x), label="y = 1/x", lw=2)​
a = 0.15
δ₀ = a - 1/(1/a+ε)δ₁ = 1/(1/a-ε) - a
c = :redplot!([a-δ₀,a-δ₀], [0,f(a-δ₀)], color=c, label="")plot!([a,a], [0,f(a)], color=c, lw=2, label="x = $a")plot!([a+δ₁,a+δ₁], [0,f(a+δ₁)], color=c, label="")plot!([0,a-δ₀], [f(a-δ₀),f(a-δ₀)], ls=:dash, color=c, label="y = 1/$a+$ε")
plot!([0,a], [f(a),f(a)], color=c, ls=:dash, lw=2, label="y = 1/$a")plot!([0,a+δ₁], [f(a+δ₁),f(a+δ₁)], ls=:dashdot, color=c, label="y = 1/$a-$ε")​a = 0.5
δ₀ = a - 1/(1/a+ε)δ₁ = 1/(1/a-ε) - a
c = :orange
plot!([a-δ₀,a-δ₀], [0,f(a-δ₀)], color=c, label="")plot!([a,a], [0,f(a)], color=c, lw=2, label="x = $a")plot!([a+δ₁,a+δ₁], [0,f(a+δ₁)], color=c, label="")plot!([0,a-δ₀], [f(a-δ₀),f(a-δ₀)], ls=:dash, color=c, label="y = 1/$a+$ε")
plot!([0,a], [f(a),f(a)], color=c, ls=:dash, lw=2, label="y = 1/$a")plot!([0,a+δ₁], [f(a+δ₁),f(a+δ₁)], ls=:dashdot, color=c, label="y = 1/$a-$ε")

Out[24]:

3 一様収束3.1 函数列の各点収束の定義

𝐼

𝑓1 (𝑥), 𝑓2 (𝑥), 𝑓3 (𝑥),… が函数 𝜑(𝑥) に各点収束するとは, 各 𝑥 ∈ 𝐼 ごとに, 任意の各点収束の定義: 区間 上の函数の列に対して, ある番号が存在して,

𝜀>0𝑁が成立することだと定める.

|𝑓𝑛 (𝑥) − 𝑓(𝑥)| < 𝜀 (𝑛 ≧ 𝑁)

|𝑓𝑛 (𝑥) − 𝜑(𝑥)| < 𝜀 (𝑛 ≧ 𝑁, 𝑥 ∈ 𝐼)が成立することだと定める. すなわち, 各 𝑥 ∈ 𝐼 ごとに,

𝑓𝑛 (𝑥) 𝐼

𝑓𝑛 (𝑥) → 𝜑(𝑥) (𝑛 → ∞)𝜑(𝑥) に各点収束するという. 各点収束においては, 各点 𝑥 ∈ 𝐼 ごとに 𝑓𝑛 (𝑥) の 𝜑(𝑥)□問題: 閉区間 𝐼 = [0,1] 上で函数列 𝑓𝑛 (𝑥) = 𝑥𝑛 は函数
𝜑(𝑥) = { 01 (0(𝑥 ≦= 𝑥1)< 1)に各点収束することを示せ. 0 ≦ 𝑥 < 1 が 1 に近ければ近いほど, 𝑓𝑛 (𝑥) = 𝑥𝑛 の 0 に収束する速さは遅くなることに注意せよ.
□
が成立するとき, 函数列は 上でへの収束の速さは全く違っていてもよい.

In [25]:



1
2
3
4
5
6
7
8
9

f(n,x) = x^n​x = 0:0.005:1
p1 = plot(xlims=(0,1), legend=:topleft)
cycls = [:solid, :dash, :dashdot, :dashdotdot]
for n in 1:12
plot!(x, f.(n,x), label="n = $n", ls=cycls[mod1(n, lastindex(cycls))])endplot(p1, size=(360,370), aspect_ratio=1, title="y = x^n", lw=1.5)

Out[25]:

3.2 函数列の一様収束の定義

𝐼 上の函数の列 𝑓1 (𝑥), 𝑓2 (𝑥), 𝑓3 (𝑥),… が函数 𝜑(𝑥) に一様収束するとは, 任意の 𝜀 > 0 に対して, ある𝑥 ≧ 𝑁 ならば, すべての 𝑥 ∈ 𝐼 について一様に|𝑓𝑛 (𝑥) − 𝜑(𝑥)| < 𝜀が成立することだと定める. □注意: 函数列 𝑓𝑛 (𝑥) の数値計算では, 区間 𝐼 内の無限個の点から有限個の点 𝑥1 < ⋯ < 𝑥𝐿 (𝑥𝑖 ∈ 𝐼 )を選んで, 函数 𝑓𝑛 (𝑥) の代
わりに配列 [𝑓𝑛 (𝑥1 ),…, 𝑓𝑛 (𝑥𝐿 )] を扱うことが普通である. そのとき収束するかどうかの判定を 𝑓𝑛 (𝑥𝑖 ) と 𝑓𝑛+1 (𝑥𝑖 ) の違いの大きさがすべての 𝑖 = 1,…,𝐿 について一斉に最初に決めておいた「許される誤差」 𝜀 > 0 より小さくなったかどうかで判定することは, 一様収束に近い考え方で収束を判定していることになる. □問題: 区間 𝐼 上の函数 𝜑(𝑥) と函数の列 𝑓𝑛 (𝑥) について以下の条件が互いに同値であることを示せ:(1) 𝑓𝑛 は 𝜑 に 𝐼 上一様収束する.
(2) 𝐼 上の函数のsupノルム ‖ ‖∞ について, 𝑛 → ∞ のとき ‖𝑓𝑛 − 𝜑‖∞ → 0 が成立する.
(3) 0 に収束する非負実数の列 𝑐𝑛 で 𝑛 → ∞ のとき |𝑓𝑛 (𝑥) − 𝜑(𝑥)| ≦ 𝑐𝑛 (𝑥 ∈ 𝐼 )を満たすものが存在する.
解答例: (1)ならば(2)を示そう. 条件(1)を仮定し, 𝜀 > 0 とする. (1)より, ある番号 𝑁 が存在して, 𝑛 ≧ 𝑁 ならばすべての 𝑥 ∈ 𝐼について |𝑓𝑛 (𝑥) − 𝜑(𝑥)| < 𝜀/2 となる. そのとき, 𝑛 ≧ 𝑁 ならば
𝜀‖𝑓𝑛 − 𝜑‖∞ = sup|𝑓𝑛 (𝑥) − 𝜑(𝑥)| ≦ 2 < 𝜀.
𝑥∈𝐼
一様収束の定理: 区間
番号が存在して,

𝑁‖𝑓𝑛 − 𝜑‖∞ → 0 となることが示された. (1)ならば(2)であることがわかった.
(2)ならば(1)を示そう. (2)を仮定し, 𝜀 > 0 とする. (2)より, ある番号 𝑁 が存在して, 𝑛 ≧ 𝑁 ならば ‖𝑓𝑛 − 𝜑‖∞ < 𝜀 となる. そのとき, 𝑛 ≧ 𝑁 かつ 𝑥 ∈ 𝐼 ならば|𝑓𝑛 (𝑥) − 𝜑(𝑥)| ≦ sup|𝑓𝑛 (𝑥) − 𝜑(𝑥)| = ‖𝑓𝑛 − 𝜑‖∞ < 𝜀.
𝑥∈𝐼
これで, 𝑓𝑛 が 𝜑 に 𝐼 上一様収束することが示された. (2)ならば(1)であることがわかった.
(2)ならば(3)を示そう. (2)の仮定のもとで, 𝑐𝑛 = ‖𝑓𝑛 − 𝜑‖∞ とおくと, 𝑐𝑛 は 0 に収束する非負実数列であり, 𝑥 ∈ 𝐼 のとき|𝑓𝑛 (𝑥) − 𝜑(𝑥)| ≦ sup|𝑓𝑛 (𝑥) − 𝜑(𝑥)| = ‖𝑓𝑛 − 𝜑‖∞ = 𝑐𝑛 .
𝑥∈𝐼
これで,

これで(2)ならば(3)であることがわかった.

𝑛 → ∞ のとき
‖𝑓𝑛 − 𝜑‖∞ = sup|𝑓𝑛 (𝑥) − 𝜑(𝑥)| ≦ 𝑐𝑛 → 0.
𝑥∈𝐼
これで(3)ならば(2)であることがわかった. □(3)ならば(2)を示そう. (3)の仮定のもとで,

注意: 特に, supノルムに関する収束と一様収束は同じ意味であることがわかった. 一様収束を扱うときにはsupノルムを使うと議論がシンプルになりやすい.

□

問題: 閉区間𝐼 = [0,1] 上で函数列 𝑓𝑛 (𝑥) = 𝑥𝑛 は函数
𝜑(𝑥) = { 01 (0(𝑥 ≦= 𝑥1)< 1)に一様収束しないことを示せ.

0 < 𝑥 < 1 のとき |𝑥| ≧ 1/21/𝑛 とすると, 𝑓𝑛 (𝑥) ≧ 1/2 となる. これで, 𝑓𝑛 (𝑥) と 𝜑(𝑥) の差の絶対値の大きさをすべて
𝑥 ∈ 𝐼 について一斉に 1/2 より小さくできないことがわかった. □解答例:のIn [26]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

f(n,x) = x^n​x = 0:0.005:1​
n = 3
p1 = plot(xlims=(-0.01,1.01), legend=:topleft, aspect_ratio=1)
plot!(x, f.(n,x), label="y = x^$n")plot!(x[1:end-1], 1/2*fill(1, size(x[1:end-1])), label="", color=:red, ls=:dash, fill=(0plot!([1,1], [1/2,1], label="", color=:red, alpha=0.1, lw=3)
plot!([1/2^(1/n), 1/2^(1/n)], [0, 1/2], label="x = 1/2^{1/$n}", color=:black, ls=:dash)​n = 9
p2 = plot(xlims=(-0.01,1.01), legend=:topleft, aspect_ratio=1)
plot!(x, f.(n,x), label="y = x^$n")plot!(x[1:end-1], 1/2*fill(1, size(x[1:end-1])), label="", color=:red, ls=:dash, fill=(0plot!([1,1], [1/2,1], label="", color=:red, alpha=0.1, lw=3)
plot!([1/2^(1/n), 1/2^(1/n)], [0, 1/2], label="x = 1/2^{1/$n}", color=:black, ls=:dash)​plot(p1, p2, size=(600, 250))

Out[26]:

3.3 連続函数列の一様収束先も連続になること
定理: 区間𝐼 上の連続な函数の列 𝑓𝑛 が函数 𝜑 に一様収束するとき, 収束先の 𝜑(𝑥) も 𝐼 上の連続函数になる.

𝐼 上の連続な函数の列 𝑓𝑛 が函数 𝜑 に一様収束すると仮定し, 𝜀 >𝜀 0 であるとする. 𝑓𝑛 が 𝜑 に一様収束することより, ある番号 𝑁 が存在して, 𝑛 ≧ 𝑁 かつ 𝑥 ∈ 𝐼 ならば |𝑓𝑛 (𝑥) − 𝜑(𝑥)| <函数 𝑓𝑁 の 𝑥0 に3 となる. 𝑥0 ∈ 𝐼 を任意に取る.
𝜀
おける連続性より, ある 𝛿 > 0 が存在して, 𝑥 ∈ 𝐼 かつ |𝑥 − 𝑥0 | < 𝛿 ならば |𝑓𝑁 (𝑥) − 𝑓𝑁 (𝑥0 )| <となる. ゆえに, 𝑥 ∈ 𝐼
3
かつ |𝑥 − 𝑥0 | < 𝛿 ならば|𝜑(𝑥) − 𝜑(𝑥0 )| ≦ |𝜑(𝑥) − 𝑓𝑛 (𝑥)| + |𝑓𝑁 (𝑥) − 𝑓𝑁 (𝑥0 )| + |𝑓𝑁 (𝑥0 ) − 𝜑(𝑥0 )| < 𝜀3 + 𝜀3 + 𝜀3 = 𝜀.
これで, 𝜑(𝑥) が任意の 𝑥0 ∈ 𝐼 で連続なこと, すなわち, 𝜑 が 𝐼 上の連続函数であることが示された. □定理: 区間 𝐼 上の函数の列 𝑓𝑛 (𝑥) について, 函数列𝑛𝐹𝑛 (𝑥) = ∑ |𝑓𝑘 (𝑥)|証明: 区間𝑘=1∞
𝑓𝑛 (𝑥) も一様収束する. このとき, その函数項級数は一様絶対収が有限の値を持つ函数に 𝐼 上一様収束するとき, 函数項級数∑𝑛=1
束するという.

□𝑛𝐹𝑛 (𝑥) = ∑ |𝑓𝑘 (𝑥)| は有限の値を持つ函数 Φ(𝑥) に一様収束すると仮定する. 𝐹𝑛 は Φ に一様収束しているので,
𝑘=1∞‖𝐹𝑛 − Φ‖∞ → 0 かつ Φ(𝑥) = ∑ |𝑓𝑘 (𝑥)| (𝑥 ∈ 𝐼 ) となる. このとき, 𝑥 ∈ 𝐼 かつ 𝑚 ≧ 𝑛 とすると,
𝑘=1
𝑚
|| 𝑛
| | 𝑚
|
||∑ 𝑓𝑘 (𝑥) − ∑ 𝑓𝑘 (𝑥)||| = |||− ∑ 𝑓𝑘 (𝑥)|||𝑘=1|𝑘=1| | 𝑚𝑘=𝑛+1 | 𝑚𝑛≦ ∑ |𝑓𝑘 (𝑥)| = ∑ |𝑓𝑘 (𝑥)| − ∑ |𝑓𝑘 (𝑥)|
𝑘=𝑛+1
𝑘=1
𝑘=1
∞
𝑚
≦ ∑ |𝑓𝑘 (𝑥)| − ∑ |𝑓𝑘 (𝑥)| = Φ(𝑥) − 𝐹𝑛 (𝑥) = |𝐹𝑛 (𝑥) − Φ(𝑥)|
𝑘=1
𝑘=𝑛+1
≦ sup
|
𝐹
(𝑥)
−
Φ(𝑥)|
≦ ‖𝐹𝑛 − Φ‖∞ .
𝑛
𝑥∈𝐼
証明:

𝑛

𝑛

𝑥 ∈ 𝐼 ごとに 𝐹𝑛 (𝑥) = ∑ |𝑓𝑘 (𝑥)| が有限の値に収束することから, ∑ 𝑓𝑘 (𝑥) も収束するので(絶対収束), その収束先を
𝑘=1
𝑘=1
𝜑(𝑥) と書く. すぐ上で示した不等式で 𝑚 → ∞ とすると, 任意の番号 𝑛 と 𝑥 ∈ 𝐼 について,|| 𝑛|||∑ 𝑓𝑘 (𝑥) − 𝜑(𝑥)||| ≦ ‖𝐹𝑛 − Φ‖∞|𝑘=1|𝑛が得られる. 右辺は 𝑥 に依存しない数列であり 0 に収束するので,∑ 𝑓𝑘 (𝑥) が 𝜑(𝑥) に一様収束していることがわかる. □各𝑘=1

次の定理は以上の2つの定理からただちに得られる.
定理: すべての□定理: 区間∞𝑓𝑛 (𝑥) が区間 𝐼 上の連続函数であり, ∑ 𝑓𝑛 (𝑥) が 𝐼 上一様絶対収束するならば, その収束先も連続函数になる.
𝑛=1

𝐼 上の函数の列 𝑓𝑛 (𝑥) に対して, 非負実数列 𝑐𝑛 で
|𝑓𝑛 (𝑥)| ≦ 𝑐𝑛 (𝑥 ∈ 𝐼),

を満たすものが存在するならば, 函数列
証明: 非負実数列

𝑐𝑛 で

∞

∞

𝑐𝑛 < ∞∑
𝑛=1

𝑓𝑛 (𝑥) は 𝐼 上一様絶対収束する.
∑
𝑛=1|𝑓𝑛 (𝑥)| ≦ 𝑐𝑛 (𝑥 ∈ 𝐼),
を満たすものが存在すると仮定する. そのとき,∞𝐶 = ∑ 𝑐𝑛 < ∞
𝑛=1

∞

∞

𝑛=1

𝑛=1

∑ |𝑓𝑛 (𝑥)| ≦ ∑ 𝑐𝑛 < ∞となるので,∞(𝑥 ∈ 𝐼)|𝑓𝑛 (𝑥)| は有限の値に収束する. その値を Φ(𝑥) と書く. このとき, 𝑥 ∈ 𝐼 ならば
∑
𝑛=1
𝑛

∞

∞

𝑛

𝑘=1

𝑘=𝑛+1
𝑛

𝑘=𝑛+1

𝑘=1

0 ≦ Φ(𝑥) − ∑ |𝑓𝑘 (𝑥)| = ∑ |𝑓𝑘 (𝑥)| ≦ ∑ 𝑐𝑘 = 𝐶 − ∑ 𝑐𝑘 .
𝑛

𝐶 − ∑ 𝑐𝑘 は 𝑛 → ∞ で 0 に収束し, 𝑥 に依存しないので, ∑ |𝑓𝑘 (𝑥)| が Φ(𝑥) に一様収束することもわかった. これで, 函数
𝑘=1
∞𝑘=1
列
∑ 𝑓𝑛 (𝑥) は 𝐼 上一様絶対収束することがわかった. □𝑛=1

注意: 上の定理を使えば, 収束先の函数が不明であっても収束することがわかる場合がある.
問題:□𝑠 > 1 の函数 𝑓𝑛 (𝑠) を

𝑓𝑛 (𝑠) = 𝑛1𝑠と定める. 1 より真に大きい実数 𝑎 を任意に取る. このとき 𝑠 ≧ 𝑎 において, 函数項級数
∞
∞ 1
𝑓
(𝑠)
=
𝑛
∑
∑ 𝑛𝑠
𝑛=1

𝑛=1

が一様絶対収束することを示せ.

𝑛 ≧ 1 ごとに 𝑓𝑛 (𝑠) = 1/𝑛𝑠 は 𝑠 に関する単調減少函数である. ゆえに|𝑓𝑛 (𝑠)| = 𝑛1𝑠 ≦ 𝑛1𝑎 (𝑠 ≧ 𝑎).
∞ 1
∞
∞ 1
そして, 𝑎 > 1 よりは有限の値に収束する. 以上によって,
𝑓
(𝑠)
=
𝑛
𝑎
𝑠 は 𝑠 ≧ 𝑎 で絶対収束する. □
∑
∑
∑
𝑛=1 𝑛
𝑛=1
𝑛=1 𝑛
解答例: 各

注意: 上の問題の

𝑎 > 1 はいくらでも 1 に近付けることができるので,∞
𝜁(𝑠) = ∑ 𝑛1𝑠 (𝑠 > 1)
𝑛=1

𝑠 > 1 における連続函数になることがわかる. □注意: 実際にはもっとよいことが言える. 𝜁(𝑠) は 𝑠 > 1 でいくらでも項別微分可能であり, 𝑠 = 1 を除いた複素平面全体に解析接続される. □はIn [27]:



1
2
3
4
5
6
7
8
9
10

g(N, s) = sum(n->1/n^s, 1:N)
s = 1.01:0.01:5.00​
p1 = plot(title="sum of 1/n^s for n=1,...,N")
plot!(ylims=(0.8, 5), xlabel="s")plot!(s, zeta.(s), label="zeta(s)", lw=2)
for (ls, N) in [(:dot,3), (:dash, 10), (:dashdot, 30), (:dashdotdot, 100), (:dashdotdot,
plot!(s, g.(N,s), label="N = $N", ls=ls, lw=1.5)
endplot(p1, size=(500, 350))

Out[27]:𝑓(𝑥) は ℝ 上の連続函数であり, |𝑥| → ∞ のとき 𝑓(𝑥) → 0 となっていると仮定する. このとき, 函数列
𝑓𝑛 (𝑥) = 𝑓 (𝑥 + 1𝑛 ) が 𝑓(𝑥) に ℝ 上一様収束することを示せ.
解答例: 任意に 𝜀 > 0 を取る. 上の方の問題の解答例で示したように, 𝑓(𝑥) は ℝ 上一様連続になる. ゆえに, ある 𝛿 > 0 が存在
1 とすると,して, 𝑥,𝑦 ∈ ℝ かつ |𝑦 − 𝑥| < 𝛿 ならば |𝑓(𝑦) − 𝑓(𝑥)| < 𝜀 となる. そのとき 𝑛 >𝛿|𝑓𝑛 (𝑥) − 𝑓(𝑥)| = ||||𝑓 (𝑥 + 1𝑛 ) − 𝑓(𝑥)|||| < 𝜀となる. これで, 𝑓𝑛 が 𝑓 に ℝ 上一様収束することがわかった. □問題:

3.4 Peano曲線𝑛𝑦𝑛 (𝑡) = Peano_𝑦(𝑛,𝑡) 𝑛 → ∞≦𝑡≦1𝑥(𝑡) 𝑦(𝑡)[0,1] × [0,1]𝑥𝑛 (𝑡) = Peano_𝑥(𝑛,𝑡) と(𝑥(𝑡),𝑦(𝑡)) (0 ≦ 𝑡 ≦ 1) を定める.

以下のプログラムのように について帰納的に定義されたの連続函数はで一様収束し, その収束先,は平面上の連続曲線
その曲線はPeano曲線と呼ばれており, 正方形の内側を埋め尽くす.

𝑥𝑛 (𝑡), 𝑦𝑛 (𝑡) がともに閉区間 [0,1] 上で一様収束することを示せ.
解答例: 𝑓𝑛 (𝑡) は 𝑥𝑛 (𝑡) または 𝑦𝑛 (𝑡) であるとする. そのとき
|𝑓𝑛 (𝑡) − 𝑓𝑛−1 (𝑡)| ≦ 21𝑛 (0 ≦ 𝑡 ≦ 1)となっているので(下の方のプロットを参照せよ), 0 ≦ 𝑡 ≦ 1 のとき
∞
∞ 1
|
𝑓
(𝑡)
−
𝑓
(𝑡)|
≦
𝑛−1
𝑛
∑
∑ 2𝑛 = 1 < ∞
問題:

𝑛=1

となる. ゆえに函数項級数

𝑛=1

𝑓0 (𝑡) + (𝑓1 (𝑡) − 𝑓0 (𝑡)) + (𝑓2 (𝑡) − 𝑓1 (𝑡)) + (𝑓3 (𝑡) − 𝑓2 (𝑡)) + ⋯は閉区間 [0,1] 上で一様絶対収束する. これは 𝑓𝑛 (𝑡) が一様収束することを意味する. □注意: 0 ≦ 𝑡 ≦ 1 のとき

∞
∞
∞ 1
𝑓(𝑡) = 𝑓𝑛 (𝑡) + ∑(𝑓𝑘+1 (𝑡) − 𝑓𝑘 (𝑡)), ∑ |𝑓𝑘+1 (𝑡) − 𝑓𝑘 (𝑡)| ≦ ∑ 2𝑘+1
= 21𝑛
𝑘=𝑛

なので,

𝑘=𝑛

|𝑓𝑛 (𝑡) − 𝑓(𝑡)| ≦ 21𝑛 (0 ≦ 𝑡 ≦ 1)

𝑘=𝑛

𝑥𝑛 (𝑡), 𝑦𝑛 (𝑡) の極限をそれぞれ 𝑥(𝑡), 𝑦(𝑡) と書く. そのとき, 任意の正方形上の点 (𝑎,𝑏) ∈ [0,1] × [0,1] に対して, ある実𝑡 ∈ [0,1] で (𝑥(𝑡),𝑦(𝑡)) = (𝑎,𝑏) を満たすものが存在することを示せ.
解答例: 𝑥𝑛 (𝑡), 𝑦𝑛 (𝑡) の作り方より(下の方のプロットを参照せよ), 任意の正の整数 𝑛 に対して, ある 𝑡𝑛 ∈ [0,1] で|𝑥𝑛 (𝑡𝑛 ) − 𝑎| ≦ 21𝑛 , |𝑦𝑛 (𝑡𝑛 ) − 𝑏| ≦ 21𝑛を満たすものが存在する. 数列 𝑡𝑛 は閉区間 [0,1] 上の数列なので, そのある部分列 𝑡𝑛𝑘 (1 ≦ 𝑛1 < 𝑛2 < ⋯ ) で収束するものが存在する. その収束先を 𝑡 ∈ [0,1] と書く. 任意に 𝜀 > 0 を取る. 𝑥(𝑡) , 𝑦(𝑡) の連続性より, 十分に 𝑘 を大きくすると|𝑥(𝑡) − 𝑥(𝑡𝑛𝑘 )| ≦ 𝜀, |𝑦(𝑡) − 𝑦(𝑡𝑛𝑘 )| ≦ 𝜀.
ゆえに, 以上と上の注意の内容を合わせると, 𝑘 → ∞ で,|𝑥(𝑡) − 𝑎| ≦ |𝑥(𝑡) − 𝑥(𝑡𝑛𝑘 )| + |𝑥(𝑡𝑛𝑘 ) − 𝑥𝑛𝑘 (𝑡𝑛𝑘 )| + |𝑥𝑛𝑘 (𝑡𝑛𝑘 ) − 𝑎| ≦ 𝜀 + 21𝑛𝑘 + 21𝑛𝑘 → 𝜀,|𝑦(𝑡) − 𝑏| ≦ |𝑦(𝑡) − 𝑦(𝑡𝑛𝑘 )| + |𝑦(𝑡𝑛𝑘 ) − 𝑦𝑛𝑘 (𝑡𝑛𝑘 )| + |𝑦𝑛𝑘 (𝑡𝑛𝑘 ) − 𝑏| ≦ 𝜀 + 21𝑛𝑘 + 21𝑛𝑘 → 𝜀.
𝜀 > 0 はいくらでも小さくできるので, (𝑥(𝑡),𝑦(𝑡)) = (𝑎,𝑏). □問題:
数In [28]:

Out[28]:

1
2
3
4
5
6
7
8
9
10
11
12

peano_x₀(t) = t < 1/2 ? 1/2 : tpeano_y₀(t) = t < 1/2 ? t : 1/2​
n = 0
t = 0:1/(2*4^n):1
x = peano_x₀.(t)y = peano_y₀.(t)plot(size=(200,200))
plot!(title="Peano($n)", titlefontsize=10)
plot!(xlims=(0,1), ylims=(0,1))
plot!(aspect_ratio=1, legend=:false)plot!(x, y)In [29]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

function peano_x(n, t)
if n == 0
peano_x₀(t)else
if t < 1/(2*4^n)
1/(2*2^n)elseif t < 1/4
peano_y(n-1, 4t)/2
elseif t < 2/4
peano_x(n-1, 4t-1)/2
elseif t < 3/4(1-peano_x(n-1, 3-4t))/2 + 1/2
else(1-peano_y(n-1, 4-4t))/2 + 1/2
end
end
end
​
function peano_y(n, t)
if n == 0
peano_y₀(t)else
if t < 1/(2*4^n)2^n*telseif t < 1/4
peano_x(n-1, 4t)/2
elseif t < 2/4
peano_y(n-1, 4t-1)/2 + 1/2
elseif t < 3/4
peano_y(n-1, 3-4t)/2 + 1/2
else
peano_x(n-1, 4-4t)/2
end
end
end
​
P = Plots.Plot[]
for n in 0:8
t = 0:1/(2*4^n):1
x = peano_x.(n,t)
y = peano_y.(n,t)
p = plot()plot!(title="Peano($n)", titlefontsize=10)
plot!(xlims=(0,1), ylims=(0,1))
plot!(aspect_ratio=1, legend=:false)plot!(x, y)
push!(P, p)endplot(P..., size=(800,800), layout=@layout(grid(3,3)))
pngplot()

In [30]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

P = Plots.Plot[]
for n in 0:8
t = 0:1/(2*4^n):1
x = peano_x.(n,t)
y = peano_y.(n,t)
p = plot()plot!(title="Peano($n)", titlefontsize=10)
plot!(xlims=(0,1), ylims=(0,1))
plot!(aspect_ratio=1, legend=:false)plot!(t, x)
plot!(t, y)
push!(P, p)endplot(P..., size=(800,800), layout=@layout(grid(3,3)))
pngplot()

In [31]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

n = 8
px = plot()
py = plot()t = 0:1/(2*4^n):1
x = peano_x.(n,t)
y = peano_y.(n,t)
plot!(px, title="Peano_x($n)", titlefontsize=10)
plot!(py, title="Peano_y($n)", titlefontsize=10)
plot!(px, xlims=(0,1), ylims=(0,1))
plot!(py, xlims=(0,1), ylims=(0,1))
plot!(px, legend=:topleft)
plot!(py, legend=:topleft)
plot!(px, t, x, label="$n", lw=0.3)
plot!(py, t, y, label="$n", lw=0.3)
plot(px, py, size=(600,500), layout=@layout(grid(2,1)), legend=false)
pngplot()

In [32]:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

P = Plots.Plot[]
for n in 1:9
t = 0:1/(2*4^n):1
dx = peano_x.(n,t) - peano_x.(n-1,t)dy = peano_y.(n,t) - peano_y.(n-1,t)p = plot()plot!(title="Peano($n) - Peano($(n-1))", titlefontsize=10)
plot!(xlims=(0,1), ylims=(-1/2,1/2))
plot!(legend=:false)plot!(t, dx, lw=0.7)
plot!(t, dy, lw=0.7)
push!(P, p)endplot(P..., size=(800,600))
pngplot()