ソラマメブログ
プロフィール
ぺんぎん
ぺんぎん
どもっす( ◎v◎ )
ぺんぎんっす。

「ぺんぎんさん」でいいっす。
「ぺんさん」でもOKっすよ。
何だって良いんっすけどね。
[個体名:Naoya Bellic]
(非商用)
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人

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分ほどエディタ上で動かしてみたんっすけど、
前進消去も終わらなかったっす・・・

明日、再挑戦してみるっす。
これ、パズルの解答になってるっす。
解答を公開しちゃうと、おもしろさが半減するっす。
「難しい!」とか「解けない!」とか言ってる隣で、
モニター越しにニヤニヤするという
個ぺん的なおもしろさのことっす。

しばらくは封印っすね。
まだ解いてないっすけど・・・


同じカテゴリー(スクリプト)の記事画像
位置判定っす
同じカテゴリー(スクリプト)の記事
 久しぶりの新関数っす (2011-04-23 23:19)
 11日(土)のオフィスアワーっす (2010-12-10 23:49)
 C#プロジェクトは凍結みたいっす (2010-07-01 22:35)
 4月24日のスクリプターズ・カフェっす (2010-04-27 19:06)
 潜入!1.38サーバーっす (2010-03-09 22:25)
 風の観測で分かったことっす (2009-08-16 22:11)

Posted by ぺんぎん at 21:03│Comments(0)スクリプト
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。