SSブログ

100万元の連立1次方程式(^^) [ひとこと言わねば]

100万元の連立1次方程式を解くことなんて、まず、ないと思うだろう。
しかし、例えば、3次元の計算を行う場合、100万元の連立方程式なんてすぐに出てくるにゃ。
例えば、1辺の長さが1mの立方体のものに力を掛けて、その応力と歪を差分法を用いて数値計算で求めようとする。x、y、z軸方向にそれぞれ100分割したら、計算点は100³=100万になってしまう。したがって、1mの立方体の応力と歪を1cm間隔で計算しようとしたら、少なくとも、100万元の連立方程式を解かなければならない!!
n元1次連立方程式を解くための掃き出し法の反復計算の回数は約n³/2回だから、100万元の1次連立方程式を解くための計算の反復回数は10¹⁸/2=5×10¹⁷回、すなわち、500ペタ回。スパコン京の一秒間に計算できる量は10ペタ・フロプスだから、「京」を使っても、優に1分はかかる計算量。
――ddt³さんが現在執筆している境界要素法ならば、3次元ではなく2次元の境界面(2次元の計算ならば、境界線の1次元)の計算でよいので、計算する点を大きく減らすことができる!! 境界要素法の最大の利点は、この計算量を減らせるというところにある。そのかわり、偏微分方程式を連立方程式に置き換える数学的な操作を離散化というけれど、境界要素法の離散化は有限要素法などよりも複雑になり、計算も複雑になるが、それでも十分すぎるほどのメリットがある。――
この問題を解くためには、応力と歪の連立方程式になるので、200万元の連立1次方程式になるのかな(^^)

1mの立方体ならばこんなものだけれども、数百メートルの超高層ビルの場合、どうなるにゃ。
50m×50m×200mの超高層ビルの場合、1m間隔で分割した場合、計算点は、50×50×200=50万で、応力と歪の2つの連立方程式になるので100万元の連立1次方程式になってしまう。しかも、分解能は1mしかないにゃ。分解能を10cmにしようとしたら、5億元の連立1次方程式を解かなければならない。
10cmの分解能じゃ〜、この超高層ビルのどこでヒビが入るかわからないにゃ。せめて、1cmくらいの分解能は欲しいということになったら、・・・。世界最高速のコンピュータを使っても、膨大な計算時間が必要になってしまう(^^)

ちなみに、気象庁が行っている最も高精度の数値天気予報の分解能は10km!! ゲリラ豪雨の予想は、この分解能ではおそらく無理。
ゲリラ豪雨の予想ができるように、この分解能をそれぞれ縦、横、高さで10倍にしたら、計算点は1000倍になり、この連立方程式を掃き出し法で解こうとしたら、1000³=10億倍の計算量になってしまう。
10億倍は大げさだけれども、1km四方の予報をしようとしたら、少なくとも今のスパコンより10万倍くらい速いスパコンじゃないと無理だと思うケロ。


なぜ、今よりもキメの細かい数値計算による天気予報が行えないのか、その理由がわかってもらえたんじゃないかな。今のスパコン程度の計算速度では、これを行うために必要な連立1次方程式を解くのに時間がかかりすぎるためだったんだにゃ。そして、スパコンの開発の歴史は、如何に早く連立1次方程式を解くけるようにするか、という一面があるんだにゃ。

INPACK ベンチマークは LINPACK に基づいたベンチマークプログラムで、システムの浮動小数点演算性能を評価する。ジャック・ドンガラが考案したもので、理学・工学で一般的な n×n の線型方程式系 Ax = b を解く速度を測定する。このベンチマークの最新版はTOP500で世界の高速なコンピュータの性能値としてランキングに使用されている。
https://goo.gl/Lm2JJ8



nice!(1)  コメント(3) 

nice! 1

コメント 3

ddtddtddt

 1mの立方体を100×100×100分割するのは、やり過ぎでしょう。せいぜい20×20×20=8000要素が限度。まぁ~1辺5cmなら許せるのでは?(^^;)。その演算数は、8000^3=5.12×10^11のオーダー。ちなみに8000×8000の配列を倍精度宣言すると、約500MB。現在の市販機なら、なんとかメモリで丸呑みできる。やっぱりちょっとやり過ぎかな?(^^;)。

 それで掃き出し法には、疎行列向け解法というのがあります。有限要素法でも差分法でも、その係数マトリックスは対角成分付近が濃くて、他は全て0が普通。非零率が1%未満というのも珍しくない。なので非零成分だけ記憶し、0部分の計算はスキップすると、5MB程度の配列の計算とそんなにかわらなくなる。倍精度5MBの配列は、800×800程度。これなら現行の市販機で、1秒もかからない。ちょっとサバ読みましたが・・・(^^;)。

 その代表的な方法はスカイライン法ですが、計算が効率化されるかわりに、そのコードは職人芸の巣窟。書けばバグの温床。計算時間よりバグ取り時間の方が、遥かに長い・・・。でも昔の人達は、貧弱な開発環境でそれをやった。昔の非力なコンピューター、いや汎用電算機では、5000×5000くらいになると、それでも1週間くらい待つのがザラだったらしい。現行の市販機でも1時間くらいは覚悟した方がいい。待ってる間に、煙草を10本以上吸えますって(^^;)。

 そもそも5000×5000以上に掃き出し法は使うべきじゃない。共役勾配法がお奨め(^^)。これも昔の人達の知恵なのであった。

 でも超高層ビルなんかを真面目に要素分割したら、とんでもないお話になる。で登場するのが梁要素(昔の人達の知恵)。

 超高層ビルって細長いよね?。だったら棒(梁要素)でモデル化して良いんじゃねっ?、ってのが基本発想。そこでキルヒホッフ・オイラーの平面保持の仮定という聞きなれない仮定を使って、細長い3次元物体を、1次元の梁要素で近似する。梁要素の節点は両端の2点のみ!。

 梁要素で全体解析した後、ハイパーストラクチャ法などと格好つけ過ぎの当たり前の方法を使ったりする。要するに重要部分だけを3次元で詳細にモデル化し、それへの外力として梁要素で解析した結果を使う・・・。

 最初の有限要素法は、大型航空機の空力挙動の解析で発展しました。大型航空機も真面目に要素分割したら、空恐ろしいお話になる。でも航空機はセミモノコック構造だ。その壁は、全体寸法に比べて非常に薄いのだ。再びキルヒホッフ・オイラーの仮定の出番で、薄い3次元物体をシェル(板)要素で近似する。シェル要素の節点は、角の4点のみ!。そうすると数千元の連立一次方程式に帰着できる。そしてスカイライン法にかけて、1週間ほど待つ・・・(^^;)。

 エッ?、計算結果が思わしくなかったら、どうするかって?。もちろん再設計して計算し直して、1週間ほど待ち・・・。あまりの効率の悪さに、共役勾配法も発展した。

 でも昔の人達は偉かった(^^)。
by ddtddtddt (2017-10-25 11:18) 

お名前(必須)

Привет https://apple.com
by お名前(必須) (2021-04-24 19:00) 

お名前(必須)

Привет https://apple.com
by お名前(必須) (2021-04-28 09:53) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。