Javaプログラミング基礎 演習問題

解答は

に提出しなさい。ソースファイル (〜.java) のみを提出。 提出は gFTP 等の ftp ソフトを用いて行ってください。

問題1 (Basic)

2 つの double 型変数用意し、適当な値を入れておく。 その数自身と、和、差、積、商を表示するプログラムを書きなさい。 プログラム名は ASMD とする。

値を変化させてみて、誤差の様子を観察するとよい。 誤差の様子を見るためには 20 桁以上の数字で出力する必要がある。 例えば、 0.123456789012345678901 が正しく表現できないこと、 非常に近い 2 つの数の差は誤差が大きいことなどが分かるはずである。

問題2 (Basic)

3 のべき乗 3k を k=1 から k=40 の範囲で すべて表示するプログラムを書きなさい。 プログラム名は Power3 とする。 べきごとに行を分けて出力すること。

整数型 int を用いた計算結果と 浮動小数点型 double を用いた計算結果を対照させて表示するようにすること。 また、 int 型の場合何乗でオーバフローが発生するか、 double 型の場合何乗で誤差が発生するかを確かめなさい。

(3のべき乗の値は各桁の和が3の倍数となるはずである (例: 33 = 27 → 2 + 7 = 9 → 9 は 3 の倍数) 。 そうならない場合、誤差が生じていると判別できる)

問題3 (Standard)

あなたは大学を卒業後、投資家となり 資金を運用しようとしているとする。

元本 100 万円を以下の3とおりの年利による複利で運用したとき、 10 年後の元利合計はそれぞれいくらになるか計算するプログラムを書きなさい。 元利合計とは元本と利息の合計のことである。 プログラム名は Compound とする。

  1. 不動産投資 8%
  2. 国内定期預金 0.05%
  3. 株式投資失敗で元本割れ -2%

複利計算の場合、 1 年ごとに利息が元金に加算されていく。 すなわち、例えば、 不動産投資での 1 年目の利息は 100万円 × 8% = 8 万円となり、 元金と利息の合計 100 万円 + 8 万円 = 108 万円が 1 年目の元利合計である。 同様にして 2 年目は 108万円 × 8% = 8.64 万円が利息であり、 108万円 + 8.64 万円 = 116.64 万円が 2 年目の元利合計となる。 これを繰り返すことにより、 10 年後の元利合計を求めることができる。

なお、この問題では浮動小数点数の計算誤差は考慮しなくて良い。

問題4 (Advanced)

次の計算方法に基づき、正の実数の平方根 (近似値) を計算するプログラムを作成しなさい。 プログラム名は SquareRoot とする。

a を求めるためには、まず x0a に初期化し、 x について以下の漸化式を繰り返し計算する。

xn = { xn-1 + (a / xn-1) } / 2

上の計算を繰り返し、 xnxn-1 の差が十分に小さく (例えば 0.001 未満に) なったら ( |xn - xn-1| < 0.001 ) 、計算を打ち切る 。 結果として求まる xn が √a の近似値となる。

このような計算方法をニュートン法と呼ぶ。