現象と数学 レポート課題

桂田 祐史


Date: 2020年9月2日公開, 2020年9月3日11:50更新


http://nalab.mind.meiji.ac.jp/~mk/report-kadai-katsurada/

(2020/9/3 11:50 加筆) http://nalab.mind.meiji.ac.jp/~mk/gensyou20200903_teisei/にも目を通して下さい。


レポートは Oh-o! Meiji に単一のA4サイズPDFで提出して下さい。

PDFは自分のやりやすい方法で作って構いません。 手書きしたものをスキャンしてPDF化しても良いです。

参考: 「授業の提出物を PDF 形式で用意する方法」

(1)
次の (a), (b) のどちらか (または両方).
(a)
人間の計算の速さと、 現在使われているコンピューター (自分が持っているものでも、 報道等で紹介されるものでも良い) の計算の速さを比べなさい。 これが正解というものはないです (人間やコンピューターの選び方にもよるし、 計算の種類にもよるし)。 比べ方によって、簡単に2,3桁違った結果になると思われるので、 その値の正確さで評価するつもりはありません。 自分で何をどうやって調べて考察して得た結論かが大事です。 答えて下さい、というよりは、個人的な調査結果を聞かせて下さい、という感じです。
(b)
この授業を聴いて、数値計算についての考えに変化が生じたら、 それを説明して下さい。
(2)
二分法のC++プログラム bisection.cpp を読んで実行し、 アルゴリズムと実行結果の説明をしなさい。 また自分が選んだ方程式を解くようにプログラムを書き換えて 1、 その結果の説明をしなさい。
interval.hpp のあるディレクトリィで、以下の3コマンドを実行する
curl -O http://nalab.mind.meiji.ac.jp/~mk/misc/20200903/bisection.cpp;
c++ bisection-skv.cpp;
./a.out
実行すると、 \fbox{\texttt{探す区間の左端α, 右端β, 許容精度ε=}} と表示されるので、 例えば \fbox{\texttt{0 1 1e-14}} と入力して enter キーを押して下さい (1e-14$ 10^{-14}$ という意味です)。
(セミコロン ; は本来不要ですが、コピペするときに、 行がくっついてしまう事故が起こることを考えて入れています。)

2020/9/3 8:40加筆     プログラム中に if (in(0,fb)) のように、 関数 in() を使っているところがあります。これは、 「区間 fb0 が属していれば」 ということです。$ f(b)$ の値が 0 に近く(0かもしれない)、 正であると保証することも、負であると保証することも出来ない、 ということです。


interval.hpp を入手するには (授業資料にも書いたけれど)
ターミナルで以下の2つのコマンドを実行
curl -O http://verifiedby.me/kv/simple/interval-simple-0.4.48.tar.gz;
tar xzf interval-simple-0.4.48.tar.gz
を実行します。 interval-simple-0.4.48.tar.gz は柏木先生のサイトにあるわけですが、 何か障害が発生することもありえますね。 そのときは次のようにして下さい。
curl -O http://nalab.mind.meiji.ac.jp/~mk/misc/20200903/interval-simple-0.4.48.tar.gz;
tar xzf interval-simple-0.4.48.tar.gz

2020/9/3 8:20加筆     $ \cos x-x=0$ という方程式についての二分法について、 C 言語を使う授業でネタにしていたことがあります。 講義動画で時間を気にして少し舌足らずだったので、補足しておきます。

2020/9/3 8:35, 9:10加筆     C++ について補足説明しておこうか、 という意味のことを口走ったことを思い出しました。

ただし、今回の課題を行うのに、 そのあたりを書き換える必要はほとんどないはずです。

書き換えるとしたら関数 f() の中身の式くらいでしょう。 そういうところはC言語と同じように書ける場合が多いと思います。

2020/9/3 10:00加筆     interval-simple-0.4.48.tar.gz には、 interval.hpp 以外に、 test-interval.cc というサンプル・プログラムがついています。 これを見ると、interval.hpp の使い方が分かります。 この解読メモをつけておきます。

http://nalab.mind.meiji.ac.jp/~mk/misc/20200903/test-interval-kaisetsu/node9.html



桂田 祐史
2020-09-03