行列を捻り出す

6次元正方行列の小行列式を新しい、20次元の正方行列の要素にしてっていうのをこれからやります。
でもって、それが結構厄介です。
main分の中でうだうだうだーって書けば良い気もしますが、そんなことしても分かりにくくなるので、いずれ外部に関数として放り出さなければならない運命になるのです。つーか機能は画面一杯で見えるくらいに短くしておくべきという暗黙の鉄則がありますからね。つーことで、どーせ配列を扱うんですが、これを関数で扱うにはポインタを使うか構造体を使うかなんですが、ポインタを関数にぶち込むのは個人的に美しくないと思うので、構造体を使おうと思います。
つーことでこれから構造体の復習っつーかお勉強です。
まあ今やる計算手法がパッケージ化されてれば良いんですけどね、如何せん世界で100人も使わないような方法なんで自分で作らないといけないんっすよね。Runge-Kuttaとかなら腐る程あるんだろうけど。

今日も数値計算です。行列から行列を作ります。こいつはいずれ関数化されるのですが、取り敢えずmain文の中でやってみます。それとは別に行列から行列を作るときの規則が結構面倒臭かったり何かして。俺ってばこんなの捌ききれるのだろうか?それにボスは何か忙しそうだしなあ。まあ取り敢えず例題からやってみますよ。
何つーか、取り敢えずエディタを立ち上げて、変数の定義だけしてみた。これからこれから。そしてエディタを使うのと向こうが用意した開発環境を使うのでどっちがいいのだろうか?僕は何気なくemacsに慣れてしまったので、これでダラダラやってる訳ですけどね。取り敢えずサンプルの材料になる行列は作成したので、これからフローチャートなんぞ書いてみる。頭の中をもう一度整理しよう。あーよく考えたら辞書的な順番で行列の生成を行わないといけないのだった。つーことで、行列の生成以外にも辞書的な順番で実行していくというのも考えないといけないみたいです。あうあうあー。


色々と添字の集合と、それに対応する新しい行列の添字の対応を考えて、新しい行列を作ろうと四苦八苦してるのですが、脳味噌が蟹味噌になりそうになりながらなんとかサンプルの結果に近づきました。あー数学の人ってこんなことばっかやってるのかあ。つーかこれ他人に教えろと言われても教えられる自信が無いっす。なんつーか数学って俺のイメージではある程度以上は自分で考えろってなる気がする。そらしょうがないわな。こんな抽象的なことを言葉で表現するのは無理な話で、脳味噌の中で考えましょうってことですね。なんつーか人間の脳味噌の限界に挑戦してる感じです。つーか自分の脳味噌の限界。
なんつーか、もうちょっとなんですよね。本当にもう少し。あと少しで完全です。なのですが、上手いこと値が格納されてなくて、それに手間取っています。あうあうあー。あとは行と列がプログラム上でどれに対応してるのかを見直してという感じですかね。
そいでもって添字の集合なんて扱ってるんで、forループが6重になりましたよ。
素数が3の添字の集合による正方行列なんで、3+3=6で6重になるのですね。つか添字の集合を実装するのはそれ程難しくなかった。作業自体は。ただそれを自分が理解するのがうまく行かなかったってことですね。はい。
もう少しだ。と思う。あれだ、整数の番号が書いてある札があって、それの全ての組み合わせについて考える訳だが、それのうち等号が成立しない場合を抽出するプログラムを考えるってことだな。つーことでこれから散歩に行こう。
よくよく考えたら上流で良くない検索の仕方をしてた。そして、散歩してきたら良いアイディアを考えついた。要するに添字の添字を動かせば良いんだってことですね。これ思いついたときはマジで感動した。やっぱ数学は楽しいなあ。