2009年06月19日
LSLで線形代数っす
「無理やりLSLで書いてみた」ってやつっす。
LSLはこういう使い方には向かないっす。
まぁ、これも修行っす。
どうもぺんぎんっす( ◎v◎ )
簡単に言うと、「連立方程式を解く」ってことっす。
中学校2年生で習うx,yの2変数くらいならラクっす。
ただ、挑戦してるのは54変数なんっすよねぇ・・・
手計算してたら何日かかるか分かんないっす。
今回は
AB = I (I:単位行列)
となるBを求めたいっす。
これはAの逆行列(A-1)っすね。
ただ、普通の方程式じゃなくって、2を法(mod 2)としてるっす。
しかも、その逆行列そのものが存在するかどうかもアヤシイっす。
なので存在確認も同時に行いたいなぁ・・・と考えてるわけっす。
こんなのを何回もやるのはダルいっすからね。
で、っす。
Gauss-Jordan法でやってみたっす。
アルゴリズムは簡単なんっすけど、演算量は多いっす。
初めてということで、まずはこれくらいっす。
用意するのはAと答えのA-1が入るlistっす。
サイズは54×54・・・と書いてるっすけど、1次元っすね。
いつものことっすから、もう慣れたっす。
Gauss-Jordan法そのものの解説は省略っす。
1.(必要ならば)行の交換
List2Listで抜き出して、Replaceするっす。
直接中身を触れないので面倒っすね。
2.乗数倍を引く(mod 2なので、実際にはXORを取ってるっす)
交換より面倒っす。
各要素をList2Integerでいちいち計算しないとっすね。
で、結果をReplaceするっす。
・・・以降の行についても同様にっす
ここまででAのランクrが分かるっす。
0のピボットが現れれば一意解はないってことっすね。
もしそうだとしても、r×rの範囲で、今度は逆向きの消去をしていくっす。
で、結果なんっすけど・・・まだ出てないっす。
さっき軽く10分ほどエディタ上で動かしてみたんっすけど、
前進消去も終わらなかったっす・・・
明日、再挑戦してみるっす。
LSLはこういう使い方には向かないっす。
まぁ、これも修行っす。
どうもぺんぎんっす( ◎v◎ )
簡単に言うと、「連立方程式を解く」ってことっす。
中学校2年生で習うx,yの2変数くらいならラクっす。
ただ、挑戦してるのは54変数なんっすよねぇ・・・
手計算してたら何日かかるか分かんないっす。
今回は
AB = I (I:単位行列)
となるBを求めたいっす。
これはAの逆行列(A-1)っすね。
ただ、普通の方程式じゃなくって、2を法(mod 2)としてるっす。
しかも、その逆行列そのものが存在するかどうかもアヤシイっす。
なので存在確認も同時に行いたいなぁ・・・と考えてるわけっす。
こんなのを何回もやるのはダルいっすからね。
で、っす。
Gauss-Jordan法でやってみたっす。
アルゴリズムは簡単なんっすけど、演算量は多いっす。
初めてということで、まずはこれくらいっす。
用意するのはAと答えのA-1が入るlistっす。
サイズは54×54・・・と書いてるっすけど、1次元っすね。
いつものことっすから、もう慣れたっす。
Gauss-Jordan法そのものの解説は省略っす。
1.(必要ならば)行の交換
List2Listで抜き出して、Replaceするっす。
直接中身を触れないので面倒っすね。
2.乗数倍を引く(mod 2なので、実際にはXORを取ってるっす)
交換より面倒っす。
各要素をList2Integerでいちいち計算しないとっすね。
で、結果をReplaceするっす。
・・・以降の行についても同様にっす
ここまででAのランクrが分かるっす。
0のピボットが現れれば一意解はないってことっすね。
もしそうだとしても、r×rの範囲で、今度は逆向きの消去をしていくっす。
で、結果なんっすけど・・・まだ出てないっす。
さっき軽く10分ほどエディタ上で動かしてみたんっすけど、
前進消去も終わらなかったっす・・・
明日、再挑戦してみるっす。
これ、パズルの解答になってるっす。
解答を公開しちゃうと、おもしろさが半減するっす。
「難しい!」とか「解けない!」とか言ってる隣で、
モニター越しにニヤニヤするという
個ぺん的なおもしろさのことっす。
しばらくは封印っすね。
まだ解いてないっすけど・・・
解答を公開しちゃうと、おもしろさが半減するっす。
「難しい!」とか「解けない!」とか言ってる隣で、
モニター越しにニヤニヤするという
個ぺん的なおもしろさのことっす。
しばらくは封印っすね。
まだ解いてないっすけど・・・
Posted by ぺんぎん at 21:03│Comments(0)
│スクリプト