プロが教えるわが家の防犯対策術!

光波の伝搬の計算としてFDTD法を用いる事を考え、Scilabを用いた1次元のFDTD法をまず行うことを考えています。想定する状況は左端に光源があり、空気(屈折率1)を伝搬するという単純なものです。
そこでプログラムを以下のようにしました。
各パラメータは波長ramuda=500*10^-9,dz=ramuda/20,dt=dz/c,透磁率と誘電率mu=ep=1としています。

Hy(1:M)=0;
Ex(1:M+1)=0;
For n=1:N,
Ex(1)=sin(n*dt*c/ramuda);
Hy=Hy-dt./mu.*diff(Ex)/dz;
Ex(2:M)=Ex(2:M)-dt./ep.*diff(Hy)/dz;
end

宇野先生や橋本先生、小舘先生などの本を読む限り条件等はこれでよいはずなのですが、全く伝搬するような計算ができませんでした。数値計算自体慣れていないため、足りない部分があるかと思いますが全く見当がつきませんでした。どうか何が足りていない、何が間違っているなどありましたらご指摘いただきけないでしょうか。

A 回答 (1件)

何をやろうとしているのか、よくわかりませんが、波動の伝搬はsin,cosを用いた時点で解を使っているのと同じであり、わざわざ差分化する必要はありません。

基本式

∂^2f/∂^2t=c^2Δf

(Δはラプラシアン)

一次元では

∂^2f/∂^2t=c^2∂^2f/∂^2x

これを差分化して

[f(i+1)-2f(i)+f(i-1)]/(⊿t)^2=c^2[f(j+1)-2f(j)+f(j-1)]/(⊿x)^2

を用いて左端の変位が伝搬していく様子を数値的に追跡するのが伝搬simulationで通常行うことです。

1次元というのにy,zが出てくるのもよくわかりません。

プログラミング以前に目的と手法をよく確認すべきです。

この回答への補足

>何をやろうとしているのか、よくわかりませんが、波動の伝搬はsin,cosを用いた時点で解を使っているのと同じであり、わざわざ差分化する必要はありません。

本来であればガウスパルスを用いることを考えていますが,まずは単純な形としてsin波を考えていました.


>1次元というのにy,zが出てくるのもよくわかりません。

FDTD法はマクスウェルの方程式を差分化して電場と磁場を交互に計算していく手法なのでy,zが出てくるのは当然かと。というよりもFDTD法をご存知なのでしょうか?

補足日時:2013/09/12 11:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!