平方根について

解決


あきお  2002-02-13 23:11:09  No: 567  IP: [192.*.*.*]

for文(iが1ずつ増える)の中にsqrt(i)という計算を入れると計算スピードが劇的に落ちてしまいます。やはりsqrtは近似値計算を行うのでその分遅くなってしまうのでしょうか?平方根を使ったほうが数学的には計算数を減らす事が出来るプログラムなのですが、やはりそこは妥協するべきなのでしょうか?

編集    削除
にしの  2002-02-13 23:56:25  No: 568  IP: [192.*.*.*]

そうですね。
近似値計算で、速度が落ちているのだと思います。

どういう計算をするかによって、平方根を使わなくて済む(もしくは、もっと早くなる)方法があるかもしれません。
数学的に早道でも、コンピュータにとっては遠回りであることは多々あります。

たとえば、グラフィックで円を書くのに、sin, cosは必要としません。
# 記憶が正しければ、掛け算も必要なかったと思います

for文の中でsqrt(i)、ということは、もしかしてπの計算ですか?

編集    削除
あきお  2002-02-14 10:30:08  No: 569  IP: [192.*.*.*]

にしのさんいつもお世話になっています。

やはり数学的な計算手順の速さだけがすべてではないのですね。
最近、大学の春休みを利用してプログラミングのトレーニングになるかなと思い
いろんな数値計算をすることにこっていて、πの計算、モンテカルロ法によるπの計算、ラグランジュ補間法、素数の計算など、こんなことなんの役に立つんだと思いながら授業を受けたことをやっています。でもやっぱりなんの役に立つのかさっぱりわかりませんけどね

編集    削除
にしの  2002-02-14 10:48:14  No: 570  IP: [192.*.*.*]

πの計算自体は役に立ちませんが、その応用ができるようになると結構役に立ちます。
πの計算を含めて、いろいろなアルゴリズムが載っている「コンピュータアルゴリズム事典」という本が出ています。今は出版されていないようですが、「C言語による最新アルゴリズム事典」は出ています。

http://www.matsusaka-u.ac.jp/~okumura/algo/algo_pas.html

ここに、アルゴリズム事典に出ていたパスカルのコードがあります。
細かい手法が載っていて、それぞれ、そのままではDelphiで動かなかったりしますが(CUIプログラムのみなので)、writeをMemo1.Lines.Addと置き換えるなどすると動作原理が見えてきます。
とても勉強になりますよ。

編集    削除