2007年4月24日火曜日

数式処理

研究の関係で、6元、ないし8元の連立方程式を解かなくちゃ行けなかったりしたんですよね。まぁその作業自体は研究の副次的な作業で、本質には余り関わってこないため、ここであまり時間は掛けたくない。
とはいえ、未知数6の連立方程式(まー1次式だからまだましっちゃーまし)なんて手計算で解いてられないんですよね。解けなくはないけれど、間違わずに素早く解くような自信はからっきしない。
おまけに、それを解いて終わりじゃなくて、その解をまた別の式に代入しなくちゃならないと来た。その式というのが分母分子がそれぞれ2次式の分数。ちなみに連立方程式を解いて出てくる解は分母分子がそれぞれ1次式の分数。分数の分母分子にこれまた分数があらわれるとかもう悪夢。
おまけにその式をプログラムに書き下す必要があるんですね。信号処理、しかもリアルタイム処理を目指す関係上、乗除算はあまり多くなって欲しくない。だから分数の分母分子に分数があるってのは頂けない。だから分母を払って整理してできるだけ簡単な形(演算量の少ない形)に変形しなくてはいけない・・・。
こんだけの作業を全部手計算でやるとかやってらんないので、連立方程式を解いてその解を別の式に代入するところまでを全部数式処理ソフトに吐かせました。いやぁ、多少なりとも数式処理ソフトの扱い方を知っていて良かった。こんなところで役に立つとは夢にも思っていなかったけれど(苦笑
ただ、それを使っても計算量が少なくなるような式の形への変形はさすがにやってくれませんから、手作業で整理します。まぁ分母を払うところまでやってくれてあるわけですから、作業としてはだいぶましなところまで進めてくれてますよね。しんどいですけど^^;
そいでまぁ整理してみたのですが、見にくい。ひっじょーに見にくい。なんせ数式がA4用紙横置きで軽くはみ出るんですから(ぁ
これは仮に学会へ提出したときに、査読委員が見る気なくすだろうということで式を行列で表現することに。
連立方程式はクラメルの公式を使えば行列式で表現できます。それを利用して表現だけはすっきりさせておきました(笑) 結局3x3の行列式を解かなくちゃ行けないので骨は骨なのだ。サラスの法則使うか、掃き出し法を使うか、まぁ汎用性を持たせるなら掃き出し法の方がいいかな? なんせそれで分母と分子の係数を求めなくちゃいけないけどさ。
で、今日のミーティングにて式の整理までできましたよと報告。いよいよプログラムでシミュレーションをしようとあいなりました。
まーまだクラスが全部完成はしてないんですよねぇ。とりあえずマルチチャネルシステム同定はある程度動いていそうだから収束条件に即した係数更新はおいとくとして(あの条件もう少し工夫はしたい。すげー抽象化しにくい^^;)、連立方程式法のクラスを作っていこうかな。マルチチャネルシステムのフィルタクラスは今日である程度形になったし、マルチチャネルシステム同定クラスはそれを継承させることでいいだろう、うん。
けど連立方程式法のクラスはメンバをどう持たせるかなぁ・・・。入出力ははっきりしてるけど公開メソッドをどうするかやなぁ・・・。まぁ見える分にはマルチチャネルのfirと係数更新メソッドくらいでいいか。後はパラメータを設定するプロパティ作っとくくらいやな。
まぁ明日クラス構成をもう少し練って紙に書き起こしておこう。こりゃ中々綺麗に書くのは難しそうだ^^;


「うーん、あたしはさ、映画とか見てすっげー面白いとかよく思うけど、
だからって映画作ろうとは思わないんだよね。観てるだけで充分なのさっ。
ワールドシリーズやスーパーボウルだって観戦するのはとても気分よく応援できっけど、
うわーっあたしもアレやりたいっ!
とか言って混じってプレイしようとは思わないんだよ。
あの人たちはものげっついがんばってあっこにいるんだなぁって、
そんだけで気持ちいいんだ。
だいたいあたしには向いてないっさ!
だったらあたしは自分に出来る別のことをするよ!」


涼宮ハルヒの陰謀 鶴屋さん
向き不向きってのはどうしてもあると思う。できたらいいな、そう思うことはたくさんあるけれど、なかなかうまくはできないもの。
誰かが頑張っているのを見たら、心に響くものがあるよね。高校野球とかその最たるものだと思う。最近高校野球とか見ると泣けて来ちゃう。涙腺弱くなったなぁ^^;

0 件のコメント:

コメントを投稿