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