情報領域演習第一:P演習
電気通信大学情報理工学域I類 (情報系)
2017年度後学期 (再履修生用)
[一覧に戻る]
課題B4
問題
数学において,非負実数 $x$ に対する次の $f(x)$, $g(x)$, $h(x)$ は必ず等しい.
\[
f(x) = 1 - \frac{1}{\sqrt{1+x}},
\qquad
g(x) = \frac{\sqrt{1+x} - 1}{\sqrt{1+x}},
\qquad
h(x) = \frac{x}{1+x+\sqrt{1+x}}.
\]
この3つの値がコンピュータ上でも等しくなるのか,検証してみたい.
$x$ が与えられたとき,$f(x)$, $g(x)$, $h(x)$ の値を計算し,出力せよ.
仕様
- $x$ は指数表記で与えられる.仮数部は小数点以下10桁まで与えられ,指数部は-99以上99以下である.
- 出力は標準出力に行う.
- 出力は指数表記で行い,仮数部は小数点以下10桁まで表示する.
- $f(x)$, $g(x)$, $h(x)$ の順に出力し,それらの間には空白を1つ入れる.
- 出力の後に改行する.
ヒント
例えば,double型の変数 x の値を指数表記で出力する場合は次のように書けばよい.
printf("%e\n", x);
仮数部を小数点以下10桁まで表示するには,以下のように書けばよい.
printf("%.10e\n", x);
例
入力 => 出力
1.0000000000e+01 => 6.9848865542e-01 6.9848865542e-01 6.9848865542e-01
1.6666666666e-10 => 8.3333340228e-11 8.3333340221e-11 8.3333333320e-11
1.2345678901e-20 => 0.0000000000e+00 0.0000000000e+00 6.1728394505e-21
1.4142135624e+10 => 9.9999159104e-01 9.9999159104e-01 9.9999159104e-01
1.4142135624e+99 => 1.0000000000e+00 1.0000000000e+00 1.0000000000e+00
注意
プログラミングの方法や実行環境によって,上に挙げた例と同じ出力が得られないかもしれない.重要な点は,出力が必ずしも同じになるとは限らず,どれが「真の値」に近いのか正しく考察することである.
提出法
CEDにて,プログラムを作成したディレクトリで以下を実行せよ.
> ~oa000833/enshu1p/2016/checker_b4.rb ファイル名
「Submission successfully completed.」と表示されれば,提出が完了したことになる.
[一覧に戻る]
[Teaching Top]
[Top]
okamotoy@uec.ac.jp