2002年度・計算機数学・第6回実習 1
実習内容1(実習時間中に行うもの)
以下のプログラムは,最初に紙の上にプログラムを書き,そのプログラムの動き(変数の値の変化)を紙 の上でトレースして正しく動くことが確認できた後,実際にプログラムをコンピュータに入力し,紙の上の トレース結果と同じ動きをしていることを確かめなさい.
もし,うまくいかない場合には, どこが間違っているかを紙の上のプログラムに戻って考えなさい.
1. 正の整数 a,bが与えられたとき, ax+by= gcd(a, b)をみたす整数 x,y を一組求めるプログラムを 書きなさい.
2. 2進GCDをプログラムしなさい.
実習内容2(各自で自習)
以下のプログラムは,最初に紙の上にプログラムを書き,そのプログラムの動き(変数の値の変化)を紙 の上でトレースして正しく動くことが確認できた後,実際にプログラムをコンピュータに入力し,紙の上の トレース結果と同じ動きをしていることを確かめなさい.
もし,うまくいかない場合には, どこが間違っているかを紙の上のプログラムに戻って考えなさい.
1. 0< x <1 をみたす10進表示された有限小数の2進小数表示を求めるプログラムを書きなさい. た
だし, 小数点以下9桁までを求めれば良いとします. また,浮動小数点演算の誤差は考慮しなくても 良いとします. 必要ならば, 数学関数ライブラリに含まれる関数ceil,floor を使ってもよい. これ らの数学関数ライブラリを使う場合には,
#include <math.h>
をプログラム冒頭にいれることと,コンパイル時に-lmオプションをつける必要がある.
2. 0 より大きく, 1 より小さい有理数を, 相異なる単位分数の和に分解するプログラムを書きなさい.
(アルゴリズムが正しく動作する理由も示しなさい.)ただし, そのアルゴリズムにより桁あふれが生 じる場合がありますが,それは考慮しなくても良いとします.
さらに, 正の有理数を相異なる単位分数の和に分解するアルゴリズムを考察しなさい.
これらのプログラム・アルゴリズムは, 完成後レポートとして提出してください.
レポート問題
1. ある物体の質量を天秤で測定する. その質量は整数値でM 以下とする. この時,必要な分銅の最小の 数と種類, 及びその測定方法を述べよ. ただし, 分銅は物体と異る側にしか乗せられない場合, 及び, 両側に乗せれる場合の両方を考察せよ.
2. 2つの正の整数 a,bに対して, gcd(a, b)を求めるために必要な除算の回数をa,bを用いて出来る限 り正確に評価せよ.
ex06.tex,v 1.5 2002-05-28 10:19:53+09 naito Exp