課題9-1
講義資料の 2.1丸め誤差中のサンプルプログラムを参照し、nを8, 10, 32, 100, 128, 1000, 1024と変更して実行するC言語プログラムを作成せよ。その結果、および、なぜそのような答えを出すのかについて考察し、TACTで提出せよ。
課題9-2
講義資料の 2.2桁落ち 中の2次方程式を解の公式を用いて解くサンプルプログラムを実行し、
(a, b, c)=(1, -1000.1, 100) とした場合の解を厳密解と数値解を求めよ。
厳密解と数値解の誤差がある場合、その理由を述べよ。
この理由を述べ、double型等を使用せずにより正確な解を求めるプログラムに変更せよ。
以下の3つをTACTにより提出せよ。
- 厳密解と数値解
- 厳密解と数値解の差が出る場合、その理由
- 正確な解を求めるプログラム
課題9-3
f(x) = cos(x) + x ln(x) - 1 = 0 について x > 0 の解を求めたい。
(a) y = f(x) のグラフをPythonプログラムを用いて描画し、解がおおよそどのあたりのあるか検討せよ。軸ラベルや描画範囲を適切に設定して、グラフをTACTで提出せよ。
(b) ニュートン・ラプソン法を用いて数値解を求めよ、初期のトライアルの解(当てずっぽうの解)をx=1とせよ。
講義資料中のC言語サンプルプログラムを参考にして、変数には倍精度実数を使用し、
できるだけ高い精度で求めよ。
以下の3つをTACTにより提出せよ。
- 最終的に求まった数値解
- 得られた数値解をもとの式( cos(x) + x ln(x) - 1 )に代入して 0 からのずれを示せ。
- C言語のプログラム
注 * x の初期値はプログラムに明示的に書いてあってもよい。
* lnは自然対数であり、C言語の組み込み関数 log(x)が使用できる。