スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | --/--/-- --:--

フーリエ解析

どんどん話が変わりますが・・・

仕事では、日常的にフーリエ解析を使っています。

概略(イメージ)はきちんと理解してるつもりですし、
フーリエ変換の公式にも慣れて、道具のごとく使っているのですが、
今、仕事関連の知識を別ブログにまとめていて、悩んでしまいました。

というのも、せっかくなので、
フーリエ級数が正しく元の関数に収束するのかということを
数学的に厳密に考えてみようと思ったところ、
これが意外にもかなり手ごわいんです・・・汗

物理屋としては、デルタ関数なるものを登場させて、
いい加減にすませてしまえば、
(などと言っては、ディラク先生に怒られるかもしれませんが・・・笑)
すごく分かりやすいのですが、
x=0で無限大に発散してるにもかかわらず、連続関数っぽく描かれているあんな関数が
数学では許されるわけありません。
「超関数」という数学的扱いがあるようですが、それはさらに難しそうです。

そこで、数学では、デルタ関数のような概念は使わずに、
地道に収束性を証明していくんですが、これが結構、骨。

まずは、「区分的に連続」とか「区分的になめらか」とかいう条件を
きちんと考えなければならないこと。

そして、収束にも、「一様収束」、「各点収束」、「平均収束」という3種類があって、
どの条件の時に、どのタイプの収束性を持つのかということ。

まあ、物理をやる上では、ほとんどの場合、どうでもいいことなんですが(笑)、
気になってしまうと、どうしようもない性格なもので・・・^^;

とりあえず、いろいろな文献をあさって、
収束性の証明の目途はついてきたかなといったところです。

どんな条件の時に、どのタイプの収束をするかについては、
未だはっきりとは分かってません。

この機会に少しずつ、手順を追って、記事にしていきたいと思っています。
スポンサーサイト
ジャンル:[学問・文化・芸術]  テーマ:[数学
数学>フーリエ解析 | コメント(0) | 2013/11/30 00:25

グラフ描画

仕事では、実験屋といえども、
時には実験装置の設計や実験結果の考察のために、
数値計算をしたりもします。
(もともとそっちの方が好きだったりするのですが・・・)

C++が好きなので、C++で計算させて、結果をテキスト形式で出力して、
Wave Metrics社の「Igor Pro」というグラフソフトで表示する。
ということをやっていたのですが、
いちいち、結果をソフトに持っていくのがめんどくさい!

というわけで、実は、このIgor Proというソフトは、単なるグラフ描画ソフトではなく、
数値解析ソフトで、統計解析から微分・積分・フーリエ変換・行列計算など
かなりいろんな数学的計算が可能なので、内部でプログラミングもできるので、
最近は、このソフトの内部でプログラミングをして計算していました。

ところが、このプログラミング言語が問題で、
いまいち、というかかなり使いにくいのです!

特に、C++に慣れてしまった人間にとっては、
オブジェクト指向に対応してないと、かなりきついです。
それどころか、参照渡しができなかったり、
グローバルな名前の衝突を気にしなければいけなかったり・・・とか、
まあ、数え上げたらきりがないのですが(笑)

う~ん、数値解析機能としては申し分ないんですけど、
もったいない限りです。

というわけで、前置きが長くなりましたが・・・
C++からアクセスできるグラフ描画ライブラリ
欲しいなと思っているわけです。
そうすれば、計算しながらリアルタイムで表示できますからね。

自作するのも面白いなあと思っているのですが、
(実際に以前に、VisualC++のMFCを使って作りかけていた残骸があるのですが)
とりあえず、既存のものでないか探してみたら、NPlotなるものがあるようですね。

で、さっそく、このライブラリをダウンロードして、
参考文献[1]のブログ記事を参考にさせていただきながら、
.NET CLRのWindowsフォームアプリで記述してみたら、
こんな感じにうまくいきました。

NPlotTest01.jpg

とりあえず、これを使うのも一案ですね!

プログラムは、参考文献のものとほとんど同じですが、
MainFormのコンストラクターのところに、
以下の数行を書き込んだだけです。

----------------------------------------------
ArrayList^ data = gcnew ArrayList();

data->Add(1);
data->Add(5);
data->Add(3);
data->Add(-2);
data->Add(0.5);

NPlot::LinePlot^ lp = gcnew NPlot::LinePlot(data);

this->plotSurface2D1->Add(lp);
this->plotSurface2D1->Refresh();
------------------------------------------------------

ちょっとプログラミング熱が上がってるので、
自分用にカスタマイズしたものを自作するのも楽しそうですね。

「プログラミング」というカテゴリを作ったので、
引き続き、進捗状況を報告していきます。


参考文献
[1] ひよっこ女性SEの記録
  「フリーのライブラリNplotを使ってグラフを描く」
  http://ameblo.jp/se-natsu/entry-10151086471.html
C++プログラミング | コメント(2) | 2013/11/26 19:13

電磁場テンソル (2)

前回に引き続き、電磁場の4元的なテンソル表現を導いていきます。

今度は、磁場の方の式
\[
{\bf B} = \nabla \times {\bf A}
\tag{1}
\]
を眺めてみます。

x成分を書き下してみると、
\[
B_x = \partial_y A_z - \partial_z A_y \\
= \partial_3 A_2 - \partial_2 A_3 \\
= f_{32} = -f_{23}
\tag{2.1}
\]
同様に、他の成分も
\[
B_y = \partial_1 A_3 - \partial_3 A_1 \\
= f_{13} = -f_{31}
\tag{2.2}
\]\[
B_z = \partial_2 A_1 - \partial_1 A_2 \\
= f_{21} = -f_{12}
\tag{2.3}
\]

ということで、前回の段階で不明だった$\clubsuit$の部分も埋められて、
電磁場のテンソルは、以下のようになります。

\[
f_{\mu\nu} = \left[
\begin{array}{cccc}
0 & \alpha E_x/c & \alpha E_y/c & \alpha E_z/c \\
-\alpha E_x/c & 0 & -B_z & B_y \\
-\alpha E_y/c & B_z & 0 & -B_x \\
-\alpha E_z/c & -B_y & B_x & 0
\end{array}
\right]
\tag{3}
\]

このようにして、相対論では電場と磁場は一つの電磁場テンソルとして書き表せます。

また、いつものように、各種単位系で記述しておくと・・・

MKSA(SI)単位系
\[
f_{\mu\nu} = \left[
\begin{array}{cccc}
0 & E_x/c & E_y/c & E_z/c \\
-E_x/c & 0 & -B_z & B_y \\
-E_y/c & B_z & 0 & -B_x \\
-E_z/c & -B_y & B_x & 0
\end{array}
\right]
\tag{3.1}
\]

CGSガウス、HL単位系
\[
f_{\mu\nu} = \left[
\begin{array}{cccc}
0 & E_x & E_y & E_z \\
-E_x & 0 & -B_z & B_y \\
-E_y & B_z & 0 & -B_x \\
-E_z & -B_y & B_x & 0
\end{array}
\right]
\tag{3.2}
\]

ここでは共変テンソルで表現しましたが、反変テンソルで書くことも可能。
反変テンソルで表現する場合には、ミンコフスキー計量$g^{\mu\nu}$を用いて、
\[
f^{\mu\nu} = g^{\mu\lambda} g^{\nu\rho} f_{\lambda\rho}
\tag{4}
\]
とやればいいので、
結果的に時間成分、空間成分のみから成る成分(00, 12 などのような成分)の符号は変わらず、
時間成分と空間成分がミックスした成分 (01, 02 などのような成分)のみが符号反転する。

というわけで、反変テンソルでの表現は、以下の通り。

\[
f^{\mu\nu} = \left[
\begin{array}{cccc}
0 & -\alpha E_x/c & -\alpha E_y/c & -\alpha E_z/c \\
\alpha E_x/c & 0 & -B_z & B_y \\
\alpha E_y/c & B_z & 0 & -B_x \\
\alpha E_z/c & -B_y & B_x & 0
\end{array}
\right]
\tag{5}
\]
ジャンル:[学問・文化・芸術]  テーマ:[自然科学
物理>特殊相対論 | コメント(0) | 2013/11/14 12:22

電磁場テンソル (1)

今度は、電磁ポテンシャルではなく、電磁場 E, B の4元形式を導きます。

まずは、電磁場を電磁ポテンシャルで表した表現を思い出します。
\[
{\bf E} = -\nabla \phi- k_3\frac{\partial {\bf A}}{\partial t}
\tag{1.1}
\]\[
{\bf B} = \nabla \times {\bf A}
\tag{1.2}
\]
電磁ポテンシャルの4元形式は以下の通りでした。
\[
A^\mu \equiv \left( \frac{\alpha}{c}\phi, {\bf A} \right)
\tag{2}
\]

まず、(1.1)から変形してみます。x成分は、

\[
\frac{\alpha}{c}E_x
= - \partial_x \left(\frac{\alpha}{c}\phi\right) - \partial_{ct}A_x
= \partial_0 A_1 - \partial_1 A_0
\tag{3.1}
\]
y成分、z成分についても同様に、
\[
\frac{\alpha}{c}E_y
= \partial_0 A_2 - \partial_2 A_0
\tag{3.2}
\]\[
\frac{\alpha}{c}E_z
= \partial_0 A_3 - \partial_3 A_0
\tag{3.3}
\]
ここで、(2)を共変にすると、空間成分だけ符号反転して、
\[
A_\mu \equiv \left( \frac{\alpha}{c}\phi, -{\bf A} \right)
\tag{4}
\]
となることを用いています。

さて、ここで次のような2階の共変反対称テンソルを定義すると、
\[
f_{\mu\nu} \equiv \partial_\mu A_\nu - \partial_\nu A_\mu = -f_{\nu\mu}
\tag{5}
\]

(3)式は、
\[
f_{01} = -f_{10} = \alpha E_x/c
\tag{6.1}
\]\[
f_{02} = -f_{20} = \alpha E_y/c
\tag{6.2}
\]\[
f_{03} = -f_{30} = \alpha E_z/c
\tag{6.3}
\]
とまとめられます。

定義から明らかに、テンソルの対角成分は0なので、
テンソルの成分は、こんな感じになります。

\[
f_{\mu\nu} = \left[
\begin{array}{cccc}
0 & \alpha E_x/c & \alpha E_y/c & \alpha E_z/c \\
-\alpha E_x/c & 0 & \clubsuit & \clubsuit \\
-\alpha E_y/c & \clubsuit & 0 & \clubsuit \\
-\alpha E_z/c & \clubsuit & \clubsuit & 0
\end{array}
\right]
\tag{7}
\]

さて、この$\clubsuit$の部分はどうなってるかを見るために、
次回は、磁場に関する(1.2)式の方を見ていくことにします。

参考文献
[1] 内山龍雄 「相対性理論」

ジャンル:[学問・文化・芸術]  テーマ:[自然科学
物理>特殊相対論 | コメント(0) | 2013/11/13 13:12
 | HOME | 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。