12/11 数値計算(2)


前回の感想,質問より

Q.
スライド中に乗っていた近似の原理を応用すれば, 3次以上の近似を作ることができるのではないかと思うのです が, そのような近似法は利用されることがあるのでしょうか?
A.
原理的には3次以上の式で近似すれば,より小さいnで同等の誤差になることが期待されます.調べてみると, Simson:s 3/8 Rule, Boole's Ruleを使った近似式で積分をおこなうことはあるようですね.ただし,多くの場合は シンプソン法で十分なので,より高次の式を使った積分は一般的ではないようです.
Q.
シンプソン公式を定義するときに、どうしてxsや、xeといった記号を使うのかがわからなかった。 x1や、x2という記号を使った方がわかりやすかったのではないだろうか。
A.
sとeはstart, endの略ですね.教科書では積分の式を説明するところで,xs, xeを 使っているので,プログラムもそれに合わせたのだと思います.x1やx2の方が分かりやすいと思う人もいると 思いますが,好みの問題なので好きな表現を使ってください.
Q.
ところで計算結果にたまにでてくる「e」ってどういう値なんですか。
A.
これは,
 irb(main):002:0> 10.0**(-10)
 10.0**(-10)
 => 1.0e-10
のような例ですね.実数を a * 10b という形で表す 科学的記数法(指数表記)は理系の教科書等で良く使われますが,Rubyを含む多くのプログラミング言語では,1.2 * 1020 を 1.2e20 のように表わします.
Q.
値は0.1177...となったのですがruby check.rb ex06.rb のチェックを何も通りませんでした。これは何故なので しょうか?
A.
プログラムは合っているようですね. check.rbを通すためには,simpson.rb の中で関数f を定義するか,中でload("./trapezoid.rb")を書いておく必要がありますね.

前回の課題について


投票システム

vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.

今日の練習,投票


今日の課題