matrix の  使い方 ??

 投稿者:与坂  昇平メール  投稿日:2009年 8月28日(金)11時12分37秒
  full  basic  を 使用して 有限要素法で  構造解析ソフトを 作成しています
大規模の matrix 用に  仮想メモリ―を  増やそうと
basic 729   w32 の basic 構成設定の  FRAME  の 下に
RetrainVirtualMemory=0   と  記入して
以下の  プログラムを  作成しました

dim  tk(a,a) , atk(a,a)
a=20000

以上の  プログラムを run  させると
300 秒程度で  matrix  の 場所が  確定されるようです

しかし
この matrix を  使用しようと

dim tk(a,a),atk(a,a)
a=20000
for i=1 to a
  for  j=1  to a
      tk(i,j)=0.0
      atk(i,j)=0.0
  next j
next i

として run  させると

EXTYE 2001  添え字が 範囲外と
エラ― が でます

そこで
この エラ―が  出ないように
tk(a,a)    atk(a,a)  matrix  を  使用するには
どの様に  すれば  よいのでしょうか


ぜひ  教えて下さい

与坂  昇平
 

Re: matrix の  使い方 ??

 投稿者:白石 和夫  投稿日:2009年 8月28日(金)12時17分29秒
  > No.497[元記事へ]

与坂  昇平さんへのお返事です。
BASICでは,変数の値を変えたとき,その変数が与えた効果を過去にさかのぼって適用することはありません。
独自拡張構文のDIM文は実行時に配列の大きさを決定します。
10 LET a=10
20 DIM m(a,a)
のように,変数値を与えてからDIM文を実行してください。
なお,Full BASICのプログラムとして書きたいときは,DIM文に変数を含めず
10 DIM a(10,10)
のように数値定数で配列の大きさを宣言してください。
 

Re: matrix の  使い方 ??

 投稿者:山中和義  投稿日:2009年 8月29日(土)07時54分26秒
  > No.497[元記事へ]

与坂  昇平さんへのお返事です。

直接の回答ではありませんが、

有限要素法は、20年前は汎用機でFORTRANによるプログラムだと思いますが、
当時このプログラム程度の問題(未知数の数、処理速度)が解決されていたなら、
当時の汎用機と現在のパソコンの性能を比較すると、次の疑問があります。

「現在のパソコンではほんとうに扱えないのでしょうか!?」


実用性は検証してみないとわかりませんが、
検討案
・当時の文献をみる

・「未知数の個数の3乗に比例する計算時間がかかる」ようですので、
 連立方程式の未知数を減らす手法を使う →還元法

・配列a()(線形リスト)は、プログラム言語がつくったメモリモデルなので、
 他の等価モデルを導入する →ランダムファイル

  a(20000)なら
  FILE00、FILE01、~、FILE19の20個のファイルで、各レコード数は1000個を用意して、
  a(i)をFILExxとレコードyyに対応させる

  LET A(10000)=A(1000)+A(1) を計算させる場合、
  CPUはA(1)~A(20000)すべてが必要ではないはずです。
 

戻る