Transcript 計算工学I-01x
計算工学I
古山彰一
[email protected]
Name
Shoichi Furuyama
(Birth: 1971.6, Miyagi Prefecture)
Hometown
1999.4 – Toyama Prefecture
Degree
1994.3 B.A. in Education (Iwate Univ.)
1996.3 Master (Information Science) (JAIST)
1999.3 Ph.D. (Information Science) (JAIST)
Research Area:
- High Performance Computing (HPC)
- Coastal Engineering
Private:
Family: Wife & Two Boys
My favorite things are Running & Biking &
Vegalta Sendai
2
Contact
部屋: 3Fの一番端
電話: 0766-86-5271
メール:[email protected]
Web: http://www.nc-toyama.ac.jp/WEB_Profile/shoichi/index.html
会議等が無ければ放課後17時まで対応しますが、
アポを取ってもらえるとありがたい。
講義の流れ
• 講義以外の時間で、講義に関する動画を視聴し
(10~20分で収まるように努力します)、その中
で出題される課題をやる。
• 授業時間では、動画や課題に関する質問を受け
それに対する解説を行い、さらにプログラミング
を行う→パソコン使います。
• 授業時間内にプログラミングは完成させてチェッ
クを受け終了。
– という予定ですが、軌道に乗るまで時間が掛かるか
も…
補間法 教科書p.47~
この2次関数の式を求めよう。
一般的な形は次のように書ける。
𝑦 = 𝑎𝑥 2 + 𝑏𝑥 + 𝑐
グラフを見ると3点を通るので、
次のような式を導出できる。
𝑥 = 1, 𝑦 = 1 →
𝟏=𝒂+𝒃+𝒄
𝑥 = 3, 𝑦 = 2 →
𝟐 = 𝟗𝒂 + 𝟑𝒃 + 𝒄
𝑥 = 4, 𝑦 = 5 →
𝟓 = 𝟏𝟔𝒂 + 𝟒𝒃 + 𝒄
3式を連立して、a,b,cを導出する。
でも…とても面倒だし、この方法で解くプログラム作れる??
4次式とか5次式なんて出てきたらもっと大変そう…
今までのやり方は忘れて、次の式を考えてみよう。
(𝑥 − 𝑏)(𝑥 − 𝑐)
(𝑥 − 𝑐)(𝑥 − 𝑎)
(𝑥 − 𝑎)(𝑥 − 𝑏)
𝑦=
𝑦 +
𝑦 +
𝑦
(𝑎 − 𝑏)(𝑎 − 𝑐) 1 (𝑏 − 𝑐)(𝑏 − 𝑎) 2 (𝑐 − 𝑎)(𝑐 − 𝑏) 3
𝑥 = 𝑎 のとき 𝑦 = 𝑦1
この式って、 𝑥 = 𝑏 のとき 𝑦 = 𝑦2
𝑥 = 𝑐 のとき 𝑦 = 𝑦3
もともと問題になっていた3点を
この式に入れてみよう。
𝑦=
になるよね。
𝑥 = 1(= 𝑎) のとき 𝑦 = 1(= 𝑦1 )
𝑥 = 3(= 𝑏) のとき 𝑦 = 2(= 𝑦2 )
𝑥 = 4(= 𝑐) のとき 𝑦 = 5(= 𝑦3 )
(𝑥 − 3)(𝑥 − 4)
(𝑥 − 4)(𝑥 − 1)
(𝑥 − 1)(𝑥 − 3)
∙1+
∙2+
∙5
(1 − 3)(1 − 4)
(3 − 4)(3 − 1)
(4 − 1)(4 − 3)
計算は面倒だけど、場合分けが無いので
プログラミング(アルゴリズム)は簡単(っぽい?)。
‥(1)
んじゃ、一般的な形を書いてみよう!
と行きたいところだけど、ちょっと準備…
𝑛
𝑎𝑗 = 𝑎0 ∙ 𝑎1 ∙ ⋯ ∙ 𝑎𝑛
数列の積
𝑗=0
3
(𝑥 − 𝑥𝑗 ) = (𝑥 − 𝑥0 ) ∙ (𝑥 − 𝑥1 ) ∙ (𝑥 − 𝑥2 ) ∙ (𝑥 − 𝑥3 )
𝑗=0
3
𝑗=0
𝑗≠1
𝑥 − 𝑥𝑗
𝑥 − 𝑥0 𝑥 − 𝑥2 𝑥 − 𝑥3
=
∙
∙
𝑥1 − 𝑥𝑗 𝑥1 − 𝑥0 𝑥1 − 𝑥2 𝑥1 − 𝑥3
さてここで、
𝑛
𝐿𝑘 𝑥 =
𝑗=0
𝑗≠𝑘
𝑥 − 𝑥𝑗
𝑥𝑘 − 𝑥𝑗
(𝑘 = 0, 1, 2, ⋯ , 𝑛)
とする。
さてここで、
𝑛
𝐿𝑘 𝑥 =
𝑗=0
𝑗≠𝑘
𝑥 − 𝑥𝑗
𝑥𝑘 − 𝑥𝑗
(𝑘 = 0, 1, 2, ⋯ , 𝑛)
とする。
ちょっと練習
(1) n=3 のときの L2(x)
3
𝐿2 𝑥 =
𝑗=0
𝑗≠2
𝑥 − 𝑥𝑗
𝑥 − 𝑥0 𝑥 − 𝑥1 𝑥 − 𝑥3
=
∙
∙
𝑥2 − 𝑥𝑗 𝑥2 − 𝑥0 𝑥2 − 𝑥1 𝑥2 − 𝑥3
(2) n=4 のときの L3(x)
4
𝐿3 𝑥 =
𝑗=0
𝑗≠3
𝑥 − 𝑥𝑗
𝑥 − 𝑥0 𝑥 − 𝑥1 𝑥 − 𝑥2 𝑥 − 𝑥4
=
∙
∙
∙
𝑥3 − 𝑥𝑗 𝑥3 − 𝑥0 𝑥3 − 𝑥1 𝑥3 − 𝑥2 𝑥3 − 𝑥4
そもそもなにをやりたかったか?
𝑦=
(𝑥 − 𝑏)(𝑥 − 𝑐)
(𝑥 − 𝑐)(𝑥 − 𝑎)
(𝑥 − 𝑎)(𝑥 − 𝑏)
𝑦1 +
𝑦2 +
𝑦
(𝑎 − 𝑏)(𝑎 − 𝑐)
(𝑏 − 𝑐)(𝑏 − 𝑎)
(𝑐 − 𝑎)(𝑐 − 𝑏) 3
この式を一般的な形で表したかった。
ではΠやL(x)を使って書いてみよう。3項あるので、Σを使って書いてみる。
2
𝐿𝑘 (𝑥) ∙ 𝑦𝑘
𝑘=0
= 𝐿0 𝑥 ∙ 𝑦0 + 𝐿1 𝑥 ∙ 𝑦1 + 𝐿2 (𝑥) ∙ 𝑦2
2
=
𝑗=0
𝑗≠0
𝑥 − 𝑥𝑗
∙𝑦 +
𝑥0 − 𝑥𝑗 0
2
𝑗=0
𝑗≠1
𝑥 − 𝑥𝑗
∙𝑦 +
𝑥1 − 𝑥𝑗 1
2
𝑗=0
𝑗≠2
𝑥 − 𝑥𝑗
∙𝑦
𝑥2 − 𝑥𝑗 2
𝑥 − 𝑥1 𝑥 − 𝑥2
𝑥 − 𝑥0 𝑥 − 𝑥2
𝑥 − 𝑥0 𝑥 − 𝑥1
=
∙
∙𝑦 +
∙
∙𝑦 +
∙
∙𝑦
𝑥0 − 𝑥1 𝑥0 − 𝑥2 0 𝑥1 − 𝑥0 𝑥1 − 𝑥2 1 𝑥2 − 𝑥0 𝑥2 − 𝑥1 2
ということで、上と同じ式(a,b,cとか変数名は異なるが)が導出できました。
問題: 式(1)と同じにするには、x0,x1,x2,y0,y1,y2を何にすればよいか?
ラグランジュの補間多項式:
n+1個の点(xj, yj), (j=0, 1, …, n)を通る高々n次の多項式L(x)は次の
式で表される。
𝑛
𝐿 𝑥 =
𝐿𝑘 (𝑥) ∙ 𝑦𝑘
𝑘=0
ただし、
𝑛
𝐿𝑘 𝑥 =
𝑗=0
𝑗≠𝑘
𝑥 − 𝑥𝑗
𝑥𝑘 − 𝑥𝑗
(𝑘 = 0, 1, 2, ⋯ , 𝑛)
宿題:
• 教科書p.50, p.51の例題3、例題4
• 教科書p.64, p.65の問2、問4