情報科学概論II(実習) 9回目

課題提出はTACTにログインして行うこと。
課題の提出〆切はTACTを確認すること。
講義資料

今日やること


講義資料を参考にして、以下の各課題のプログラムをそれぞれ作成し、実行せよ。 TACTを使用した課題の提出については、各設問の指示に従うこと。

課題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により提出せよ。
  1. 厳密解と数値解
  2. 厳密解と数値解の差が出る場合、その理由
  3. 正確な解を求めるプログラム

課題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により提出せよ。
    1. 最終的に求まった数値解
    2. 得られた数値解をもとの式( cos(x) + x ln(x) - 1 )に代入して 0 からのずれを示せ。
    3. C言語のプログラム
    注 * x の初期値はプログラムに明示的に書いてあってもよい。
      * lnは自然対数であり、C言語の組み込み関数 log(x)が使用できる。