作者HeterCompute (異質運算)
看板Mathematica
標題[問題] 如何解決複數相位微分會出現複數
時間Thu Dec 15 10:33:47 2016
如題,複數的相位值域是在-pi到pi,
但是直接拿函數微分會出現複數,
並且並不是虛部遠小於實部的那種誤差,
請問這種狀況要如何解決呢?謝謝。
以下是測試code,
n = 1.5;
d = 200*10^-9;
\[Theta] = 0;
r1 = (1 - n)/(1 + n);
\[Delta][\[Lambda]_] := (4 \[Pi])/\[Lambda] n d Cos[\[Theta]];
cc = 3*10^8;
\[Delta]w[\[Omega]] := \[Delta][(2 \[Pi] cc)/\[Omega]];
\[Omega]\[Omega][\[Lambda]_] := (2 \[Pi] cc)/\[Lambda];
GD[\[Omega]_] =
D[-Arg[(Exp[-I*\[Delta]w[\[Omega]]] - r1)/(
1 - r1 Exp[-I*\[Delta]w[\[Omega]]])], {\[Omega], 1}]
GD[\[Omega]\[Omega][400*10^-9]]
結果最後一行出現的結果是9.60569*10^-44 - 2.98719*10^-29 I,
虛部遠大於實部,與答案明顯不符。請問該如何解決這個問題呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.7.214
※ 文章網址: https://www.ptt.cc/bbs/Mathematica/M.1481769230.A.1B9.html
推 LPH66: 問題可能是在 Arg 身上, 因為 Arg 有分支 12/15 16:37
→ LPH66: 直接做符號運算的話會因為 Arg 無法微分被卡住 12/15 16:38
→ LPH66: 啊, 找了一些資料好像說 Arg 本來就無法微分, 跟分支無關 12/15 16:44
→ AmibaGelos: 取log微,虛部是phase shift 12/15 20:56
感謝A大,這個方法有效!
※ 編輯: HeterCompute (140.112.7.214), 12/16/2016 14:53:43