解答は
- ホスト名: earth.mlab.im.dendai.ac.jp
- ディレクトリ: /home/submit/JavaBasic/[今日の日付]/[学籍番号]
に提出しなさい。ソースファイル (〜.java) のみを提出。 提出は gFTP 等の ftp ソフトを用いて行ってください。
3 のべき乗 3k を k=1 から k=40 の範囲で すべて表示するプログラムを書きなさい。 プログラム名は Power3 とする。 べきごとに行を分けて出力すること。
整数型 int を用いた計算結果と 浮動小数点型 double を用いた計算結果を対照させて表示するようにすること。 また、 int 型の場合何乗でオーバフローが発生するか、 double 型の場合何乗で誤差が発生するかを確かめなさい。
(3のべき乗の値は各桁の和が3の倍数となるはずである (例: 33 = 27 → 2 + 7 = 9 → 9 は 3 の倍数) 。 そうならない場合、誤差が生じていると判別できる)
double 型の変数を使い、0.1 から始めて 0.1 ごとに数値を 1000 個 (0.1, 0.2, 0.3, ..., 100.0) 表示するプログラムを作成しなさい。 プログラム名は CumulativeMisscalc1 とする。
double 型の変数 x に対して x = x + 0.1 のような計算を繰り返すようにすること。 ただし、この方法で計算を行うと、ある時点で計算の誤差が生じるはずである。 誤差が生じる様子を観察しなさい。 さらに、このプログラムでは、 計算が終わった時点で誤差が約何パーセントになるか計算するようにしなさい。
誤差の計算方法: 計算結果(x) と本来の値(100.0) との差 / 本来の値(100.0) * 100.0
次のように System.out.printf を用いると小数第16位まで表示することができる。
System.out.printf("%.16f", [表示したい式]); System.out.println();
前のプログラムでは、計算に従い誤差が生じてしまうはずである。 誤差を小さくするにはどうすれば良いか考え、 新たな方法でプログラムを書きなさい。 プログラム名は CumulativeMisscalc2 とする。
計算が終わった時点で誤差が約何パーセントになるか計算するようにし、 前のプログラムよりも改善されていることを示すこと。
あなたは大学を卒業後、投資家となり 資金を運用しようとしているとする。
元本 100 万円を以下の3とおりの年利による複利で運用したとき、 10 年後の元利合計はそれぞれいくらになるか計算するプログラムを書きなさい。 元利合計とは元本と利息の合計のことである。 プログラム名は Compound とする。
- 不動産投資 8%
- 国内定期預金 0.05%
- 株式投資失敗で元本割れ -2%
複利計算の場合、 1 年ごとに利息が元金に加算されていく。 すなわち、例えば、 不動産投資での 1 年目の利息は 100万円 × 8% = 8 万円となり、 元金と利息の合計 100 万円 + 8 万円 = 108 万円が 1 年目の元利合計である。 同様にして 2 年目は 108万円 × 8% = 8.64 万円が利息であり、 108万円 + 8.64 万円 = 116.64 万円が 2 年目の元利合計となる。 これを繰り返すことにより、 10 年後の元利合計を求めることができる。
なお、この問題では浮動小数点数の計算誤差は考慮しなくて良い。
次の計算方法に基づき、正の実数の平方根 (近似値) を計算するプログラムを作成しなさい。 プログラム名は SquareRoot とする。
√a を求めるためには、まず x0 を a に初期化し、 x について以下の漸化式を繰り返し計算する。
上の計算を繰り返し、 xn と xn-1 の差が十分に小さく (例えば 0.01 未満に) なったら ( |xn - xx-1| < 0.001 ) 、計算を打ち切る 。 結果として求まる xn が √a の近似値となる。
このような計算方法をニュートン法と呼ぶ。