情報領域演習第一:P演習

電気通信大学情報理工学域I類 (情報系)
2017年度後学期 (再履修生用)


[一覧に戻る]


課題B3

問題

正弦関数の加法定理は次の式で表される. \[ \sin(\alpha + \beta) = \sin \alpha \cos \beta + \cos \alpha \sin \beta. \] これは数学的に正しい等式であるが,コンピュータ上でも等しくなるのか,検証してみたい.$\alpha$ と $\beta$ が与えられたとき,左辺の値 $\sin(\alpha + \beta)$ ,右辺の値 $\sin \alpha \cos \beta + \cos \alpha \sin \beta$ ,そして,左辺の値と右辺の値の差,つまり,「左辺の値 - 右辺の値」を計算し,その3つの数値を出力せよ.

ヒント

math.hをインクルードし,sin(x) とすれば x [ラジアン] の正弦が計算できる.同様に,cos(x) とすれば x [ラジアン] の余弦が計算できる.コンパイルをする際に「-lm」というオプションを付けることを忘れずに.

仕様

ヒント

例えば,double型の変数 x の値を指数表記で出力する場合は次のように書けばよい.
printf("%e\n", x);
仮数部を小数点以下3桁まで表示するには,以下のように書けばよい.
printf("%.3e\n", x);

入力         => 出力
0.000 0.000  => 0.000e+00 0.000e+00 0.000e+00
3.000 4.000  => 6.570e-01 6.570e-01 1.110e-16
-1.000 1.000 => 0.000e+00 0.000e+00 0.000e+00
1.000 2.000  => 1.411e-01 1.411e-01 -8.327e-17
3.141 3.142  => -1.853e-04 -1.853e-04 -4.441e-16

注意

プログラミングの方法や実行環境によって,上に挙げた例と同じ出力が得られないかもしれないが,左辺の値と右辺の値の差については,出力の絶対値が1.000e-012以下ならば十分であると見なす.重要な点は,左辺と右辺の差が必ずしも0.000e+000になるとは限らないことを観察することである.

提出法

CEDにて,プログラムを作成したディレクトリで以下を実行せよ.
> ~oa000833/enshu1p/2016/checker_b3.rb ファイル名
「Submission successfully completed.」と表示されれば,提出が完了したことになる.


[一覧に戻る]


[Teaching Top] [Top]
okamotoy@uec.ac.jp