[問題] 如何解決複數相位微分會出現複數

看板Mathematica作者 (異質運算)時間8年前 (2016/12/15 10:33), 8年前編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
如題,複數的相位值域是在-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

12/15 16:37, , 1F
問題可能是在 Arg 身上, 因為 Arg 有分支
12/15 16:37, 1F

12/15 16:38, , 2F
直接做符號運算的話會因為 Arg 無法微分被卡住
12/15 16:38, 2F

12/15 16:44, , 3F
啊, 找了一些資料好像說 Arg 本來就無法微分, 跟分支無關
12/15 16:44, 3F

12/15 20:56, , 4F
取log微,虛部是phase shift
12/15 20:56, 4F
感謝A大,這個方法有效! ※ 編輯: HeterCompute (140.112.7.214), 12/16/2016 14:53:43
文章代碼(AID): #1OKW4E6v (Mathematica)
文章代碼(AID): #1OKW4E6v (Mathematica)