• 検索結果がありません。

スプライン補間 関数近似 (2)

N/A
N/A
Protected

Academic year: 2021

シェア "スプライン補間 関数近似 (2)"

Copied!
62
0
0

読み込み中.... (全文を見る)

全文

(1)

関数近似 (2)

スプライン補間

(2)

補間とは, 関数

f(x)

が未知であるが, その

n

個の点

x1, . . . , xn

における値

y1, . . . , yn

が知

られているとき,

x1, . . . ,xn

以外の点における

f(x)

の値を推測しようとすることをいう. 1

次元の補間問題において, min{x

1, . . . , xn} ≤ x≤max{x1, . . . , xn}

となっているときに補

間, そうでないときに補外と呼ぶ

([伊理]).

(3)

もっとも基礎的な補間は線形補間.

これ以外に, 多項式による補間もよく用いら れる.

多項式による関数の近似や補間を考えること

に根拠を与えているのが, Weierstrass の多項

式近似定理である.

(4)

Weierstrassの多項式近似定理

関数

f

が区

[a, b]

において連続であれば,

f

に一様収束す

る多項式の列が存在する.

W. Rudin, Principles of Mathematical Analysis, 3/e, McGraw-Hill, 1976

「一様収束」とは,一様ノルムの意味で収束という意味.また,一様ノル ムの定義は,kfk= supt∈[a,b]|f(t)|.前回紹介したessential supremum と同じ記号は,意味がほぼ同じだから. このあたりの議論には深入りし

この定理は次のような形で一般化される.

ない.

(5)

合とする.

1 f, g∈ A,α∈Cならf+g∈ A,f g∈ A,αf ∈ A 2 x1, x2 ∈K,x1 6=x2なら∃f ∈ A, f(x1)6=f(x2) 3 ∀x∈K,∃g∈ A,g(x)6= 0.

このとき,Aの閉包はK上の連続関数全体を含む.

W. Rudin, Principles of Mathematical Analysis, 3/e, McGraw-Hill, 1976

(6)

• Fourier

解析の基礎を与えるのが, Stone - Weier-

strass

の定理である.

三角関数による近似

(Fourier

級数展開) は, 単 位円上で定義された関数

(周期関数)

の多項式 による展開と解釈することができる. これを 導いたのも

Weierstrass

である.

竹之内,フーリエ展開,秀潤社, 1978.

(7)

無限次元空間における線形写像のことを線形 作用素と呼ぶことが多い.

• (V,k · kV),(W,k · kW)

をノルム空間,

A

V

から

W

への線形作用素とする. このとき,

A

の作用素ノルムは次のように定義される:

kAk= sup

x∈V,kxkV≤1

kAxkW (岩波数学辞典).

(8)

• V, W

におけるノルムの取り方には, 様々な ものがあり得る. これらの取り方に応じて作 用素ノルムは変わる.

作用素ノルムのことを誘導ノルム

(induced

norm)

と呼ぶこともある

S. Skogestad and I. Postlethwaite, Multivarible feedback control, Wiley, 1996.

(9)

• m

n

列の行列は,

m×n

次元のベクトルと 解釈することもできるし,

n

次元数空間から

m

次元数空間への線形写像

(作用素)

と解釈 することもできる.

したがって, 行列

A

m

n

列の行列とした

とき,

A

のベクトルとしてのノルムと作用素

としてのノルムが定義できる.

(10)

• A

のベクトルとしてのノルムの定義は,

kAkp = (Pm

k=1

Pn

l=1|akl|p)1/p (1≤ p <∞) kAk= maxk∈{1,...,m},l∈{1....,n}|akl|

• A

の作用素としてのノルムは

kAk= supx∈V,kxkV≤1kAxkW

(11)

• (V,k · kp), (W,k · kp)に対し,V からW への線形 作用素の作用素ノルムをlp誘導ノルムと呼ぶ

S. Skogestad and I. Postlethwaite, Multivarible feedback control, Wiley, 1996.

• (V,k · kp), (W,k · kq)としたとき, V からW への 線形作用素の作用素ノルムは(p, q)−誘導ノルム とでも呼ぶべきであろうが,このような用語は定 着していない.

(12)

• Scilab

の組み込み関数

norm

は, 行列

A

に対し て以下のように振舞う.

norm(A) l2

誘導ノルムを返す

norm(A,1) l1

誘導ノルムを返す

norm(A,’inf’) l

誘導ノルムを返す

norm(A,’fro’) Frobenius

ノルムを返す

(ベクトルとしてのl2ノルム)

(13)

• ややこしいことに, Scilab(およびMATLAB)の オンラインマニュアルは,lp誘導ノルムのことを 単にlpノルムあるいはpノルムと呼んでいる. な お,norm(A,’fro’)はAをベクトルと見たときの l2ノルムを返すが, これはFrobeniusノルムと呼 ばれている.

• 行列のノルムについてはD. S. Bernstein, Matrix Mathematics, 2/e, Princeton, 2009を参照.

(14)

• (xi, yi)i∈{1,=...,n}

n

個の実数の対とし, これ らのすべての点を通る

n−1

次の多項式を求 める, という問題を考える. ただし, これら の実数の対には重複がなく, かつ

x1

から

xn

までの中には値が同じものはないと仮定する.

(xi, yi)i∈{1,=...,n}

がある関数に対応すると考え

れば, このような仮定は妥当である.

(15)

• n−1

次の多項式には係数が

(第0

次の項から 第

n−1

次の項まで)

n

個あるから, 多項式の 係数を未知数と解釈すると,

n

個の未知数に 関する

n

個の方程式を解くことになり, 解は

(大抵の場合には)

存在する筈である.

(16)

ここで, 以下の多項式を考える.

pi(x) = Q

j<i(x−xj)Q

j>i(x−xj) Q

j<i(xi−xj)Q

j>i(xi−xj)

i = 1のときにはj < iとなるjは存在しないが, この場合に Q

j<i(xxj) = 1,Q

j<i(xixj) = 1と定義する. 同様に,

i=nのときにはj > iとなるjは存在しないが, この場合には Q

j>i(xxj) = 1,Q

j>i(xixj) = 1と定義する. これらは,記法

を簡潔にするための約束ごとである.

(17)

• pi(x)

の分子を見ると,

i6=j

であれば,

pi(xj) = 0

となることがわかる.

一方,

x=xi

とすると,

pi

の分母と分子が等し くなるから,

pi(xi) = 1

であることがわかる.

したがって,

pi

は,

pi(xi) = 1

で,

j 6= i

なら

pi(xj) = 0

となる,

n−1

次の多項式である.

(18)

• pi(x)

の性質を使い,

l(x) =y1p1(x) +y2p2(x) +· · ·+ynpn(x)

とすると,

l(x)

(x1, y1,), . . . , (xn, yn)

を通 る

n−1

次の多項式になっていることがわか

る. これが

Lagrange

補間多項式である.

(19)

• Lagrange

補間多項式による補間のことを

La- grange

補間という.

• Lagrange

補間多項式の次数は与えられた標

本点の数から決まる.

n

個の標本点が与えら

れたときには, 次数は

n −1

次になる. そし

て, Lagrange 補間多項式 は与えられた標本

点に対して一意的である.

(20)

以下の議論では, 区間

[a, b]

で定義された連続

関数

f

Lagrange

補間によって近似すると

いう問題を考える.

• Lk

を, 区間

[a, b]

において

k

個の標本点を定 め, 関数

f

から

k

個の標本点における関数値

を用いて

Lagrange

補間多項式を定める作用

素とする.

(21)

• Lk

は線形作用素であることが示せる.

• f

から

Lk

によって作られる

Lagrange

補間多 項式を

Lkf

と書く.

問題となるのは, 作用素の系列

(Lk)k∈N

が与

えられたとき,

Lkf

k

を大きく取れば

f

近付くかどうか, ということである.

(22)

• 関数の定義域を区間[a, b]とし, (Lk)k∈Nを,区間

[a, b]におけるあるk個の標本点の取り方に対応

したLagrange補間の系列とすると, (Lk)k∈Nに よって一様近似できない連続関数が存在する.

• 逆に, 連続関数f を固定した場合には, 標本点の 取り方をうまく定めることで,それを一様近似す るような列(Lk)k∈Nを作ることができる.

(23)

• fをn回以上連続微分可能な関数とする. Lnをn 個の標本点(x1, . . . , xn)に対応したLagrange補 間多項式を作る作用素とし, W =Qn

k=1(x−xk) とする. このとき, 以下が成り立つ[杉原,室田]:

kf −Lnfk≤ kf(n)kkWk∞

n!

(24)

• f

が解析関数であっても, 標本点の取り方を 等間隔としてしまうと,

n

をいくら大きく取っ ても

Lnf

f

に近付かないことがある. これ

Runge

の現象という. 標本点の取り方を工

夫すれば, この問題を改善することができる

[杉原,

室田].

(25)

• Lagrange

補間には, 数値計算の誤差に弱いと いう問題がある.

展開に

pi(x) =

Q

j<i(x−xj)Q

j>i(x−xj) Q

j<i(xi−xj)Q

j>i(xi−xj)

のかわ

りに

(x−x1), (x−x1)(x−x2), . . .

を使うこ

とにより, この問題は緩和される.

(26)

• fn(x) =c0+c1(x−x1) +c2(x−x1)(x−x2) +

· · ·+cn−1(x−x1)· · ·(x−xn−1)

とおく.

• f(x1) = c0,f(x2) =c0+c1(x2−x1),f(x3) = c0+c1(x2−x1) +c3(x3−x1)(x3−x+2), . . . , f(xn) =c0+Pn−1

i=1 ciQi

j=1(xn−xj)

である.

(27)

したがって,

f(xi) =yi (i = 1, . . . , n)

を満た す

c0, c1, . . . , cn

が一意的に定まる. この係数 を用いた補間を

Newton

補間という.

• Newton

補間と

Lagrange

補間の計算のしかた

は異なるが, 標本点を固定したとき, Newton

補間と

Lagrange

補間によって得られる多項

式は同一である.

(28)

• Lagrange

補間

(およびNewton

補間) で得ら

れた多項式は, 標本点の取り方によっては, 標

本点間における関数値の脈動が激しい多項式

となる. しかし,

n

個の標本点を通る

n−1

の多項式は一意的に定まるため, 多項式の次

数をこのままにした場合には, これを改善す

る余地はない.

(29)

• Lagrange

多項式より高い次数の多項式を用 いることで, この「脈動」を抑えることを考 える.

具体的には, 標本点において, 関数

f

と関数

値およびその

1

階の導関数の値を一致させる

ことを考える.

(30)

区間

[a, b]

において少なくとも

1

階微分可能

な関数

f(x)

を多項式によって近似したい.

n

個の相異なる点

{x1, . . . , xn}

において,

f(x)

の値

f(x1), . . . , f(xn)

と, その導関数

f(x)

f(x1), . . . , f(xn)

が与えられているものと

する.

(31)

• 2n

個の方程式を解くということは, 未知数が

2n

個必要である. すなわち, 2

n−1

次の多項

(係数は零次の項も含めて2n

個) を使えば,

目的は達成される筈である.

以下,斎藤,数値解析入門,東京大学出版会, 2012に基づいてHermite多項式の求め 方を説明する. [杉原,室田]にはVandermonde行列を用いた導出法が記載さている.

(32)

• Lagrange

補間で用いた

pi(x) =

Q

j<i(x−xj)Q

j>i(x−xj) Q

j<i(xi−xj)Q

j>i(xi−xj) (i = 1, . . . , n)

を再び用いる.

• hi(x) = (pi(x))2(1−2pi(xi)(x−xi)),

ki(x) = (pi(x))2(x−xi)

とする

(i= 1, . . . , n).

(33)

見にくいが, (1

−2pi(xi)(x−xi))

において,

(x−xi)

の係数

2pi(xi)

p

の点

xi

における 値であり, 定数である. よって,

hi(x)

2n−1

次の多項式である.

定義から,

ki(x)

2n−1

次の多項式である.

(34)

代入して計算すると次の事実が確認できる.

hi(xj) =

(1, j=i,

0, j6=i,, hi(xj) = 0,

ki(xj) = 0, ki(xj) =

(1, j=i, 0, j6=i,

(35)

したがって, 以下のようにすると

{x1, . . . , xn}

において

f

およびその導関数と値が一致する

2n−1

次多項式が得られる. これが

Hermite

補間多項式である.

q2n−1(x) =

n

X

i=1

f(xi)hi(x) +

n

X

i=1

f(xi)ki(x)

(36)

• Hermitte

補間多項式を求めることを

Hermite

補間という

([杉原,

室田]).

• Hermite

補間多項式の近似誤差は, Lagrange

補間多項式と同様の方法により評価できるが,

詳細は略す

([斎藤], [杉原,

室田]).

(37)

• e−x2cos 2x

および

e−x2cos 6x

を区間

[−2,2]

に おいて

Lagrange

補間および

Hermite

補間し た例を次ページに示す.

標本点は

11

点で, 等間隔とした.

• e−x2cos 2x

については, 区間

[−2,2]

の外部で

関数と補間多項式を比較した.

(38)

-0.2 0 0.2 0.4 0.6 0.8

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

y

x

Hermite f(x_k)

(39)

-600 -400 -200 0 200 400 600 800 1000

-3 -2 -1 0 1 2 3

y

x

Hermite

(40)

-4 -2 0 2 4 6 8 10

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

y

x

Hermite f(x_k)

(41)

• 標本点では関数とその補間多項式の値は一致する.

• Lagrange補間の, 区間の境界の近くで関数値か

らの乖離が発生するという欠点はHermite補間 では緩和されている.

• Lagrange補間, Hermite補間とも,補外に関する 性能は悪い.

(42)

• 関数の脈動と比較して標本点が少ない場合には, 関数とその補間多項式の値との標本点以外の点に おける値の乖離が大きくなる.

• とはいえ,数値計算の誤差の問題があるため,標本 点を無闇に多くするわけにはいかない(特にHer- mite補間多項式).

• 標本点以外の点における近似精度については,線 形補間の方が良いこともある.

(43)

• Lagrange補間とHermite補間には, 多項式の次 数が高いという問題と,標本点以外で関数値と補 間多項式の値に大きな乖離が発生することがある という問題があった.

• 線形補間にはこのような問題はないが,一方で微 分可能でないという問題がある.

• 線形補間の良さを踏襲しつつ補間関数を微分可能 にしようというのがスプライン補間の考え方.

(44)

線形補間では, 区間

[xk−1, xk]

における補間直 線と区間

[xk, xk+1]

は別物であった.

スプライン補間では, 区間

[xk−1, xk]

と区間

[xk, xk+1]

とで, 相異なる多項式を用いて補間 をおこなう.

以下の議論の典拠は

[杉原,

室田], [斎藤].

(45)

• n

個の標本点

x1 < x2 < · · · < xn

があれ

(Lagrange

補間と異なり, 大小順に並べら

れている必要がある), 各区間で

1

個, 全体で

n−1

個の補間多項式が作られる.

(46)

有限個の点

x1 < x2 < · · · < xn

が与えられ, 区間

[xk, xk+1] (1≤k≤n−1)

において

f

m

次の多項式となるとき,

f

は区分的

m

次多 項式という.

• (m−1)

階までの導関数が全領域で連続とな

る区分的

m

次多項式を,

m

次スプラインと

いう.

(47)

• n

個の標本

{(x1, y1), . . . ,(xn, yn)}

が与えられ ているとき,

xk

における値が

yk

となるよう な

m

次スプラインによる補間を

m

次スプラ イン補間という.

応用上は, 3 次のスプラインがよく用いられ

る.

(48)

• S(x)

を, これから構成しようとしている

3

次 の区分的

3

次多項式とする.

スプライン補間は補間であるから,

S(x1) = y1, . . . , S(xn) =yn

でなければならない.

開区間

(xk, xk+1) (1 ≤ k ≤ n−1)

では

S(x)

は多項式だから,

S(x)

は連続である.

(49)

よって, 区間の端点における

S(x)

の右微分と

左部分が一致すれば,

S(x)

によってスプライ

ン補間が達成される. このようにするために

は,

S(xk) = dk

とし,

dk

を未知数とする方程

式を解けばよい

(具体的な形は後述).

(50)

区間

[xk, xk+1]

においてスプライン補間の

「部品」を 構成するには, 2 個の 標本点

{(xk, yk),(xk+1, yk+1}

に関する

Hermite

補間

多項式 を用いる.

n = 2

のとき

Hermite

間多項式の次数は

2n−1 = 3

だから, 次数は

合っている.

(51)

• どの区間について計算しても同じことなので, {(x1, y1),(x2, y2)}が与えられているものとし,区 間[x1, x2]におけるHermite補間を考える.

• 2点に関するLagrange補間はn −2 = 1だか ら線形補間であり, p1(x) = (x−x2)/(x1−x2), p1(x) = (x −x1)/(x2 −x1)とすると, l(x) = y1p1(x) +y2p2(x)である.

(52)

• δ = x2 −x1 とおきh1, h2, k1, k2 を求めると, h1(x) = δ13(x −x2)2(δ + 2(x −x1)), h2(x) =

1

δ3(x−x1)2(δ−2(x−x2)),k1(x) = δ12(x−x1)(x−

x2)2,k2(x) = δ12(x−x1)2(x−x2)となる.

• y1, y2, d1,d2を用いてHermite補間多項式を求 めると,y1h1(x) +y2h2(x) +d1k1(x) +d2k2(x)と なる. そのx1における右微分は d1,x2における 左微分はd2である.

(53)

• 区間[x2, x3]以降でも同様に操作をおこなう. 区 間[x2, x3]の左端x2 における補間多項式の右微 分はd2で, [x1, x2]の右端x2における補間多項式 の左微分と一致するから, 1階の導関数は連続で ある. d1, d2, . . . , dnはまだ決まっていない.

• m= 3だから, 2階の導関数も全領域で連続でな ければならない. ここからdkを定める.

(54)

• この補間多項式のx1における右2階微分とx2に おける左2階微分はそれぞれ6(y2δ−y2 1)−4dδ1−2dδ2,

−6y2δ−y2 1 + 2dδ1 + 4dδ2.

• δ1 =x2−x12 =x3−x2とおき, [x2, x3]にお いて同様の計算をした後に,x2における左右から の2階導関数の値を等号で結んで整理すると,

d1 δ1+2

1 δ1 + 1

δ2

d2+d3 δ2 = 3

y2−y1

δ12 +y3−y2 δ22

(55)

• δk=xk+1−xk (1≤k≤n−1)とおいて全区間 について同様の計算をおこない, γk = 1/δk−1 + 1/δk+1 (2≤k≤n−1),µk = 1/δk (1≤k≤n), νk= (yk−yk−1)/δk−12 + (yk+1−yk)/δk2 (2≤k≤ n−1) とすると,これらの式を次ページように連 立1次方程式として纏めることができる.

(56)

µ1 γ2 µ2 . .. ... . ..

µn−1 γn−1 µn−1

 d1

... dn

=

 ν2

... νn−1

• この連立1次方程式は,n個の変数に対して方程 式がn−2個なので, 解は一意ではない.

• 解を一意にするために, 上記に式を2個追加して 解を求めることが普通である.

(57)

• 補間したい関数fが既知で微分可能のとき,f(x1) = S(x1+0),f(xn) =S(xn−0)とする方法がある.

• これ以外に,S′′(x1+ 0) =S′′(xn−0) = 0とする 方法もある(教科書にはこちらだけが書かれてい る).

• 上記において, +0は右極限, −0は左極限をあら わす.

(58)

• Scilabでスプライン補間をおこなう関数は色々.

• 関数interpは,x= (x1, . . . , xn)における関数値 y= (y1, . . . , yn)とその導関数値dy = (y1, . . . , yn) および補間関数値を計算したい点のデータz = (z1, . . . , zm)を受け取り,zにおけるスプライン補 間関数値を返す.

• 次ページに例を示す.

(59)

スプライン補間をおこない, 0から0から3まで0.1刻 みで関数値を評価する:

x=[0 %pi/4 %pi/2 3*%pi/4 %pi];

y=sin(x);

dy=cos(x);

z=0:0.1:3;

val=interp(z,x,y,dy);

(60)

補間点における関数値を返すが, xとyのペアを2行n 列の行列にして与える点と(導関数は不要), 「0.1刻み で関数値を計算」などのように刻みを与える点, 返却値 は2行m列の行列で, 第1列にx軸上で取られた点の 値,第2列に補間関数値が入る点が異なる.

たとえば, 先ほどと同じx,yについて, x軸上で0.9刻 みで補間関数値を計算したいときには次のようにする.

(61)

x=[0 %pi/4 %pi/2 3*%pi/4 %pi];

y=sin(x);

val=smooth([x;y],0.9);

valの内容は以下のようになる(端点も含まれる):

val =

0. 0.9 1.8 2.7 3.1415927

0. 0.7817805 0.9724687 0.4333687 1.225D-16

(62)

• 関数splinは,与えられた標本点からスプライン 関数を生成し,その標本点におけるスプライン関 数の導関数を返す.

• ScilabのオンラインマニュアルのInterpolation の項を見ると,これ以外にもスプライン補間に対 応する関数があるのがわかるが,この講義ではこ れ以上述べない.

参照

関連したドキュメント

はじめに 計算の複雑さをを表わすために “ 計算量 ” という言葉がある。厳密な定義は長くなるの でここでは述べないが、簡単にいえぱ “ 計算 (

本研究では、 Padua 点上の Chebyshev 補間と,その係数である Padua 補間を 求める高速アルゴリズムを学び

北海道大 学は X

これを補うものとして,部分和の相加平均の数列を用いる Cesaro の一次総和法((C, 1) 総和 法)がある。.

(ll) (12) (ll)も分子にZが現れて変りばえがしない,この点 の考察は次の節で行う. 又これとは別に,

これらは有理関数補間を数値的に計算する場合の数値誤差に起因している

はじめに

、すなわち 「近 似は精度が高いほど良い」 というものである。 -方、 近似代数では、