はじめに、このページは、書きかけのメモです。 #contents *理解したい対象のページ [#rfa6199f] http://homepage2.nifty.com/eman/electromag/maxwell.html *まずはひとつだけ [#l0509ca5] マクスウェルの方程式を復習してみる自分用のメモ Java言語風にマクスウェル方程式を理解してみる。 式が4つほど、ならんでおるのぅ。 とりあえず、1つだけみていこうかな。 rot(E)+@B/@t=0 ←こんな感じのやつね。 (偏微分の記号をだすのがめんどくさかったので、@を偏微分の記号ってことにしました。) 式がかいてあって、その変数の定義があとにかいてある。 プログラムでは、変数の定義を先に書くのが基本なので、 並べ替えて書いておく。 単なる変数ではなくてベクトルのようだ。Javaのクラスぽく使って書いてみる。 *クラスを考えてみる [#yc1f7e49] 3次元のベクトルをDimentionVectorクラスとする。 単位とかを保持した方がいいのかもしれない、 とりえずSI単位と、CGS単位を用意しておく。 それとよく使う記号も格納が必要かもしれない。 次元式もとりあえずつけちゃえ。 紐理論とかの影響で ひょっとしたら3次元じゃなくて 11次元かもしれないので、内部的にはArrayList型でもっておく abstruct class DimentionVector extends ArrayList<Double>{ //CGS単位 public String unitCgs=""; //SI単位 public String unitSi=""; //量記号 public String simbol=""; //次元解析 public String dimensionalAnalysis=""; public DimentionVector{ //x add(0); //y add(0); //z add(0); } public Double getX(){ get(0); } public void setX(Double value){ add(0,value); } //Y,Zも同様 } こんな感じで書いておく Eって書きたいところだが、javaは分かりにくい名前はだめなのさ 電場 Eは英語でelectric field だから *//電場クラス [#v3a2c667] class ElectricField extends DimentionVector 磁束密度はBって書いてあるけど 英語でmagnetic flux densityだから *//磁束密度クラス [#u9ec59a0] class MagneticFluxDensity extends DimentionVector{ //CGS単位 public String unitCgs="G"; //SI単位 public String unitSi="T"; //量記号 public String simbol="B"; //次元解析 public String dimensionalAnalysis="MT(-2)I(-1)"; } だね。Wikiをみるとと 透磁率と磁場の強さの積で表されるとかいてある。 で、E-Hで理論展開すればいいのか、E-Bで理論展開すればいいのか下記に述べられているので参考にするといいかもしれない。 http://ja.wikipedia.org/wiki/E-B%E5%AF%BE%E5%BF%9C%E3%81%A8E-H%E5%AF%BE%E5%BF%9C *E-B対応ってなんだろ [#qa0f5ae6] 統一理論の完成に必要な違いで、ループ電流の結果、磁場が存在しているとするのがE-B対応ってかいてってかいてあったけど、よくわからん。 カミオカンデで実験した人の論文が下記にあるけど、 http://www-sk.icrr.u-tokyo.ac.jp/sk/pub/master_web.pdf 宇宙ができたときぐらいのエネルギーがいるとか、なんとか書いてある、 function xyzVecor rot(xyzVector e){ return new xyz(@(e,z,y)-@(e,y,z),@(e,x,z)-@ez/@x,@ey/@x-@ex/@y); } *Javaで偏微分ってどうかくんだよう [#sc0d132c] function Function @(Function func,Simbol s1,Simbol s2){ return @func.s1/@s2; } ぐぐってみる 数式処理は、数式処理ソフトを使った方がよさそうだと思ってまいりました。 maximaという数式ソフトがあり、それを使ってマクスウェルの方程式を解いているらしい例が下記のアドレスにありました。 http://okwave.jp/qa/q3853447.html 最後の逆行列をもとめだしたあたりで、鬼のような数式の群れがでてきました。 人間がみても理解できないだろうなぁ。 数学は解く手順を覚える学問であり、実際の数式は、パソコンが内部的に管理してくれていたほうが、スマートだとおもったよ。 しかし、maximaのデフォルトってアスキーアートチックな出力でびっくり プログラム的な出力をしたい場合は下記のtipsに書いてありました。 http://www.cymric.jp/maxima/tips.html maximaって色々できすぎるので、まず最初はtip集から入門したほうがよさそうだなぁとおもったよ。 *maximaに非対話モードを発見 [#ba46e90e] maxima --batch-string="factor(1000);" ってやるんだって、かいてあっただけなんだけど、 どっちかっていうと、フィルタっぽく使いたいんだよね。 *コマンドラインから使う方法 [#cf65179c] 例 たとえば、factor(1000);をためしてみたいとすると下記のように記入する echo display2d:false$factor(1000);|maxima -q|findstr "(%o" コマンドラインから使えるってことは、あらゆるプログラム言語から使えるってことじゃん? これはすごいことなのではなかろうか。。。