配布プリント

計算機数学演習 A 2015.5.26. レポート課題
• 漸化式で定義される数列の計算.
– フィボナッチ数列 Fn+2 = Fn+1 + Fn , F1 = 1, F2 = 1
– チェビシェフ多項式 Tn+1 = 2xTn (x) − Tn−1 (x), T0 (x) = 1, T1 (x) = x
• マクローリン展開による定数の近似値の計算.
– 指数関数 ex のマクローリン展開 ex = 1 + x +
1 2
2! x
+
1 3
3! x
+ · · · より, 自然対数の底 e の近似値 2.7182 · · · .
• Asir で多桁小数の計算するには, ctrl, setprec という命令を使えばよい. 分数を小数に変換するには, 小数 1.0
をかける.
多桁小数を取り扱うおまじない
1000 桁の小数を取り扱う (1000 はもっと大きくしてもよい)
分数 1/3 を小数に変換
ctrl("bigfloat", 1);
setprec(1000);
1/3 * 1.0;
• Asir で x の有理式の x に値を代入するには, subst という命令を使う.
F を x の多項式とする
多項式 F に x=1 を代入した値を計算.
F=x^2+2*x+1;
subst(F, x, 1);
レポート課題
1
レポート課題 : 以下の問題の中から 2 つ選び, 解答のプログラムを書いて (手書きでも印刷でもよい, 形式は自由)
提出せよ.
提出期限 : 6/9(火) まで
問題 1. tan x の逆関数 arctan x のマクローリン展開は
arctan x =
であるが, が, 上のべき級数を 2N + 1 次で打ち切った式を計算する関数 arctan_series(N) を作れ. arctan(1) =
π
4
よ
り円周率 π の近似値を計算せよ. (arctan_series 関数で計算した x の多項式に x = 1 を代入すれば arctan(1) の近似
値が得られることを使う.) また
1
1
π
− arctan
=
5
239
4
の公式 (マチンの公式, 1706 年, マチンはこれを使って円周率を 100 桁求めた) を用いて円周率 π の近似値を計算せよ.
4 arctan
問題 2. arctan のマクローリン展開を用いて円周率の近似値を計算する式をマチン型の公式というが, 上の式以外にも
色々なものが知られている. どのようなものがあるか調べ, その公式を用いて円周率の近似値を計算するプログラムを
作れ.
問題 3. 円周率を計算する公式として,
(
)
∞
∑
4
2
1
1
1
−
−
−
π=
16n 8n + 1 8n + 4 8n + 5 8n + 6
(ベイリー, ボルウェイン, プルフ 1995 — BBP 公式)
n=0
が知られている. BBP 公式の和について, 第 N 項まで計算する関数 bbp(N) を作れ. すなわち,
(
)
N
∑
4
2
1
1
1
−
−
−
16n 8n + 1 8n + 4 8n + 5 8n + 6
n=0
を計算する関数が bbp(N) である. さらにこれを用いて, 円周率の近似値を計算せよ.
1
問題 4. ルジャンドル多項式の多項式 Pn (x) は, 漸化式
Pn+1 (x) =
2n + 1
n
xPn (x) −
Pn−1 (x) (n ≥ 1), P0 (x) = 1, P1 (x) = x
n+1
n+1
で定義される多項式である.
1. ルジャンドル多項式 P2 (x), P3 (x), P4 (x) を計算せよ.
P2 (x)
P3 (x)
P4 (x)
2. ルジャンドル多項式 P0 (x), P1 (x), P2 (x), P3 (x), . . . , P20 (x) をベクトルに入れ, それらを表示するプログラムを書け.
問題 5. コラッツ予想とは, 任意の正の整数 N について, N が偶数であれば N を 2 で割る, N が奇数であれば N を 3
倍して 1 を加える, このような操作を有限回繰り返せば, N が 8 → 4 → 2 → 1 と 1 に必ず到達するというものである.
正の整数 N について, コラッツ予想を確かめる関数 collatz(N) を作れ.
• N は関数の引数としておく.
• N ̸= 1 である限り以下を続ける.
1. N が偶数ならば N ← N/2.
2. N が奇数ならば N ← 3N + 1.
方程式を計算機を使って近似的に解く方法として ニュートン法 がある. 方程式 x2 − 2 = 0 をニュートン法を使って
近似的に解くことを考える. 方程式 x2 − 2 = 0 の解を図で考えれば, 関数 y = x2 − 2 と x 軸の交点である. この交点の
x 座標を次の手順で近似的に求める.
1. 適当な実数値 a1 をとる.
2. 関数 y = x2 − 2 の x = a1 における接線を考える. 接線は (a1 , a21 − 2) を通り, 傾きが 2a1 であることから
y = 2a1 x − a21 − 2 と求められる.
3. 接線と x 軸の交点の x 座標を計算すると
a1
1
+
となる. これを a2 とおく.
2
a1
4. 関数 y = x2 − 2 の x = a2 における接線を考え, x 軸との交点の x 座標を求めれば, 先ほどと同様に a3 =
5. 4 と同様の計算を行い a4 , a5 , a6 , . . . を得る. (初項 a1 , an =
a2
1
+
2
a2
an−1
1
+
の漸化式を満たす数列 an の計算)
2
an−1
6. 十分な回数を繰り返せば an は, y = x2 − 2 と x 軸の交点の x 座標に近づく. (きちんと証明する必要があり)
√
√
√
√
方程式 x2 − 2 = 0 の解は 2, − 2 であるから, 上で得られた近似解は 2 (または − 2) の近似値ということになる.
このようにして平方根の近似値を求めることができる.
1
an−1
+
の漸化式を満たす数列を第 10 項まで計算するプログラ
問題 6. for 文を用いて, 初項が適当な値, an =
2
a
n−1
√
ムを作り, その値を小数に変換して 2 の近似値を求めよ.
問題 7. 方程式 x2 − 3 = 0 をニュートン法で解くことを考える. a1 を適当な実数とおく.
1. y = x2 − 3 の x = a1 における接線の方程式を求めよ.
2. 接線と x 軸の交点の座標 a2 を求めよ.
3. この方程式を近似的に解くには, 結局どのような漸化式について計算すればよいか.
4. この漸化式を満たす数列を第 10 項まで計算するプログラムを作れ.
5. 方程式 x2 − b = 0 をニュートン法で解く場合の漸化式はどうなるか予想せよ.
2