sinとcosのテーブル

解決


アグス  URL  2005-08-24 19:50:49  No: 58732

こんにちは、下記のアルゴリズムはなんの意味表しましか?教えてください。。

#define PIK 0.003067962 //3.1415926/1024
//sinとcosのテーブルを用意する(0〜πラジアン)
      double sn[1024],cs[1024];
      for(i=0;i<1024;i++){
            sn[i]=sin(PIK*i);
            cs[i]=cos(PIK*i);
      }

有難う。。


YuO  2005-08-24 20:06:15  No: 58733

コメントにあるとおりですが……。
「何が」わからないのですか?


アグス  URL  2005-08-24 21:08:07  No: 58734

double sn[1024],cs[1024];
[1024]の数字は1MBですね又は1024ビット..なんでPIは1024に割るんですか?sn[i]は0から1024ビットの角度を表しますか?cs[i]もsn[i]と同じですね。。0ビットから1024ビットの角度を表します。何のためにこんなアルゴリズムがありますか??

よるしく。。。

アグス


YuO  2005-08-24 21:24:58  No: 58735

> double sn[1024],cs[1024];
> [1024]の数字は1MBですね又は1024ビット..

「[1024]の数字」とは何ですか?

> なんでPIは1024に割るんですか?

区間[0, π) [rad]において等間隔で1024個の値を得るためでしょう。

> sn[i]は0から1024ビットの角度を表しますか?
> 0ビットから1024ビットの角度を表します。

「0ビット」「1024ビット」の角度とは?

sn[i]は,sin (iπ/1024)を保持します。

> 何のためにこんなアルゴリズムがありますか??

おそらく,正弦および余弦の値を先に計算してキャッシュするためでしょう。
尤も,上記が正しいかどうかは書いた人に訊かないとわかりませんが。


アグス  URL  2005-08-25 00:15:53  No: 58736

そうですね。。。このアルゴリズムは正弦および余弦の値を先に計算してキャッシュするためですね。。でも、なぜか区間(0, π)において、等間隔で1024個の値を得るのが、まだ分からない理由なのですね。。

ここでのキャッシュする機能を説明してくれませんか?メモリ領域の確保の関係ですか??

アグス


まきじ  2005-08-25 00:46:24  No: 58737

>ここでのキャッシュする機能を説明してくれませんか?メモリ領域の確保の関係ですか??

それぞれの配列は、double 型の要素を 1024 個メモリ上に確保して、
そこにラジアンを記憶しています。


YuO  2005-08-25 00:48:38  No: 58738

ホームページアドレスとして存在しないアドレスを書かないでください。

> でも、なぜか区間(0, π)において、等間隔で1024個の値を得るのが、まだ分からない理由なのですね。。

区間(0, π)ではありません。区間[0, π)です。
ref) http://ja.wikipedia.org/wiki/%E5%8C%BA%E9%96%93_%28%E6%95%B0%E5%AD%A6%29
1024という値の意味合いは,コードを書いた人に訊いてください。
これは,256だろうが100だろうが本質的には違わない値です。

> ここでのキャッシュする機能を説明してくれませんか?

単に先に正弦・余弦の値を計算しているだけです。
おそらく,正弦や余弦の計算には時間がかかるので,
剰余計算だけで得られるようにしているのだと思いますが。


アグス  2005-08-25 02:25:54  No: 58739

有難うYuOさんとまきじさん。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加