C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#


(過去ログ 132 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■78299 / inTopicNo.1)  C#
  
□投稿者/ 初心者A (1回)-(2016/01/06(Wed) 19:32:13)

分類:[C#] 

初心者です。

1〜100までの変数m と 1〜200までの変数n のそれぞれの組合せたときの結果 a[m,n]をすべて出力する計算をしたいと思っています。

配列を使って下記のようなプログラムを組みました。


double [,] a = new double [100,200];
int m,n;

for(m=0; m<100; m++)
{
for(n=0; n<200; n++)
{

a[m,n]=t*(Math.Sin(m)+Math.Cos(n));

}
}

今はまだ m と n の組合せによる a[m,n] の1つの多次元配列の結果を出力しておりますが、

今後、

m1 と n1 の組合せによる a[m1,n1]、

m2 と n2 の組合せによる a[m2,n2]、

・・・

とさらに多次元配列を増やしていきたいと考えております。

やはり、多次元配列を増やしていくと演算処理速度がかなり遅くなっていきますでしょうか?
引用返信 編集キー/
■78300 / inTopicNo.2)  Re[1]: C#
□投稿者/ 魔界の仮面弁士 (619回)-(2016/01/06(Wed) 20:29:37)
No78299 (初心者A さん) に返信
> 1〜100までの変数m と 1〜200までの変数n のそれぞれの組合せたときの結果 a[m,n]をすべて出力する計算をしたいと思っています。
> 配列を使って下記のようなプログラムを組みました。
提示頂いたコードで行われている計算は
1〜100, 1〜200 に対する組み合わせではなく、
0〜99 , 0〜199 に対する組み合わせなのでは?


> m1 と n1 の組合せによる a[m1,n1]、
> m2 と n2 の組合せによる a[m2,n2]、
> ・・・
意味が良く分かりませんが、a[m,n,o] の 3 次元ということですか?


> やはり、多次元配列を増やしていくと演算処理速度がかなり遅くなっていきますでしょうか?
処理内容にもよりますが、配列へのアクセスは比較的高速に行われます。
特に一次元配列に対しては。

ただ、多次元配列については、それ自体、あまり使われないですね。件数が多いなら尚の事。
多次元だと Linq 等での使いまわしもしにくいですし。



いずれにせよ、速度面を考慮したいなら、まずは「実測」ありきです。

計算が複雑な場合、良く使う計算式とその結果の表をあらかじめ記録しておくとか(ルックアップテーブル)、
全パターンの計算が必ずしも必要でないのなら、演算処理に優先度をつけて処理するようにするとか、
単純だが膨大な件数を処理する必要があるのなら、並列演算処理の導入を検討するとか、
他にも、省力化のために三角関数をテイラー展開するなどなど、処理案件によっていろいろと対策が
施されることもありますが、処理時間が十分に許容できるようなケースでは、処理時間短縮のために
分かりにくいコードを書くよりは、分かりやすい(保守しやすい)コードにする方が重要となるケースも多いです。

ということで、計測無しに論じても、あまり意味が無いと思いますよ。


そもそも、演算結果を「配列」、それも多次元で管理する理由は何ですか?

たとえば随時演算そのものが目的なら、全部メモリ上に溜め込まずとも、
計算し終わったものから、随時出力していけば良さそうです。
引用返信 編集キー/
■78306 / inTopicNo.3)  Re[2]: C#
□投稿者/ 初心者A (2回)-(2016/01/07(Thu) 08:45:04)

ご回答有難う御座います。助かります。

具体的なやりたい事というのは、x座標 と y座標 のプロット位置の z座標を計算で出して、

いくつもの点を3次元座標にプロットしたいという内容になります。

上記のプログラムでいうところの、mの値はx、nの値はy となります。a[m,n]の値をzとしてプロットさせようかと思っています。

時間tというもうひとつの変数があって、ボタンを押すとtの値が1、2、3・・・と変化していき、

3次元プロットの形状も変化していく、、、といったプログラム内容となります。

多次元配列でやるべきではないですかね、、、


三角関数の値の精度はそこまで要らないので、テイラー展開することも検討してみます。

有難う御座います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -