演習問題

数値解析
— 演習問題 —
電子情報システム学科
担当:高安亮紀
1/12
2 分法
1. a0 := a, b0 := b とする.
2. cn+1 :=
an +bn
2
(an , bn の中点; n = 0, 1, 2, · · · ) とする.
3. cn+1 が「十分解に近く」なったら終了, そうでなければ
▶
f (an )f (cn+1 ) < 0 (f (an ) と f (cn+1 ) が異符号) ならば,
an+1 := an , bn+1 := cn+1 ,
▶
f (bn )f (cn+1 ) < 0 (f (bn ) と f (cn+1 ) が異符号) ならば,
an+1 := cn+1 , bn+1 := bn
として, 区間 [an+1 , bn+1 ] を構成し, 2–3 を繰り返す.
2/12
Newton-Raphson 法
1. 適当な初期値 x0 を与える.
2. xn+1 := xn −
f (xn )
f ′ (xn )
(n = 0, 1, 2, · · · ) とする.
xn+1 が「十分解に近付く」まで, これを繰り返す.
3/12
どのように微分するか?
Newton 法の反復
xn+1 := xn −
f (xn )
f ′ (xn )
において, f ′ (xn ) をどのように計算するのか.f ′ (x) が具体
n)
の代わ
的に書ける場合はいいが,そうでない場合は − ff′(x
(xn )
りに
−f (xn )
[f (xn ) − f (xn−1 )]/(xn − xn−1 )
という数値微分を用いることも多い.これは割線法(secant
method)という手法と同じである.
4/12
演習について
▶
以下で指示される 3 問のプログラムをそれぞれ作成し,
共有フォルダより提出せよ.
▶
はじめに自分 PC のフォルダ内に学籍番号のフォルダを
作成し,出来たコードを入れておく.
▶
各コードのファイル名は「問題番号 学籍番号.c」と
する.
▶
提出は共有フォルダ内に学籍番号のフォルダを丸ごと
提出する.
(一度提出したファイルは編集できないので
注意!)
提出期限:5 月 19 日(火)14:00
▶
5/12
提出するに当たって,以下のことに注意すること.
▶
C 言語で書くこと(C++はダメ).
▶
コンパイルが必ず通るものを提出する.
▶
見て分かりやすいコードを書く(インデント重要).
▶
コピーしたコードや参考にしたものがあれば必ず書く.
▶
提出期限を過ぎてからのファイルは受け付けません.
C 言語であればどんなコードでも良い.問題の表示と同
様に出力するコードを作成してください.またコード作
成の際は,紙とペンを使用してコードを作成することを
おすすめします.
6/12
第1問
7/12
第1問
√
2 分法を用いて, 2 を計算するプログラムを書きなさい.
(非線形方程式 x2 − 2 = 0 を解くプログラム)
▶ ソースファイルは「01 学籍番号.c」とせよ.
▶
入力と表示は以下のようにする:
Input initial inteval [a,b]:
a = 1.0【Enter】
b = 50.0【Enter】
1.414213562373095
* 小数点以下 15 桁が正しく表記されるようにせよ.
8/12
第2問
9/12
第2問
整数値 n と小数値 a を与えたとき,Newton 法もしくは数値
微分を利用した割線法を用いることにより a の n 乗根を計
算するプログラムを作れ.
▶
ソースファイルは「02 学籍番号.c」とせよ
▶
表示は以下のようにする:
Compute n th root of a:
n = 10【Enter】
a = 3.0【Enter】
1.116123174033905
*
√
3 ≈ 1.1161231740339044.
10
10/12
第3問
11/12
第3問
非線形関数
(
x)
f (x) = 40 log 1 +
− log(2)
4
としたとき(log の底は e),f (x) = 0 の解は区間 [0, 1] 内に
解がありそうである.この解を数値計算するプログラムを
作成せよ.
▶
ソースファイルは「03 学籍番号.c」とせよ
▶
表示は以下のようにする:
Answer is ?.???????????????
* 小数点以下 15 桁まで表示させよ.
12/12