การกู้คืนจำนวนจินตภาพของการวิเคราะห์ต่อเนื่องจากส่วนจริง


11

สถานการณ์ของฉัน

ฉันมีฟังก์ชั่นของตัวแปรเชิงซ้อนนิยามผ่านอินทิกรัลที่ซับซ้อน สิ่งที่ฉันสนใจคือค่าของฟังก์ชั่นนี้ในแกนจินตภาพ ฉันมีการเข้าถึงตัวเลขฟังก์ชั่นนี้บนริบบิ้นต่อไปนี้: Z = ( x , Y ) ( - , ) × [ - 1 , 1 ] การแสดงออกที่สมบูรณ์เป็นทางการแตกต่างนอกโดเมนนี้และดังนั้นฉันต้องการการวิเคราะห์ต่อเนื่อง เพื่อสรุปสถานการณ์ของฉันในภาพf(z)z=(x,y)(,)×[1,1]

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือสิ่งที่ฉันรู้เกี่ยวกับบนริบบิ้นนี้จากตัวเลข:f(z)

  1. มันมีความสมมาตรพร้อมกันเกี่ยวกับแกนจินตภาพและแกนจริง

  2. มันสูญสลายไปที่ศูนย์ที่Re(z)

  3. มันพัดขึ้นมาใกล้ฉัน มันอาจเป็นเสาหรือจุดแตกกิ่งผมไม่รู้ ฉันสงสัยว่าธรรมชาติของความแปลกประหลาดนี้ (และอาจจะทั้งหมดเอกบางแห่งอื่น ๆ ของความต่อเนื่องการวิเคราะห์) ขึ้นอยู่กับเฉพาะ parameterization ξของฟังก์ชันนี้ (ดูหนึ่งรายละเอียดด้านล่าง)z=±iξ

ในความเป็นจริงมันดูคล้ายกับหรือ1 / ( 1 + z 2 ) 2 nเมื่อทำการลงจุด นี่คือพล็อตของส่วนที่แท้จริง:sech2(z)1/(1+z2)2n

ป้อนคำอธิบายรูปภาพที่นี่

คำถามของฉันคือจากจำนวนข้อมูลที่ฉันมีเกี่ยวกับฟังก์ชั่น (การเข้าถึงตัวเลขทั้งหมดบน ribbon นั้น) มีวิธีใดบ้างที่ฉันจะคำนวณการประมาณตัวเลขของฟังก์ชันนี้ตามแกนจินตภาพหรือไม่? ฉันใช้ Mathematica ตามวิธี

เหตุผลที่ฉันสนใจค่าตามแกนจินตภาพคือเพราะฉันต้องการประเมินการแปลงฟูริเยร์ต่อไปนี้ของฟังก์ชันนี้:

(1)f¯(t)=dxeitx1x2+x02f(x)

t10


สิ่งที่ฉันได้ลอง

  1. ฉันพยายามที่จะคำนวณอินทิกรัลความผันผวนสูงขั้นสุดท้าย eq (1) การประเมิน eq (1) สำหรับค่าเดียวของ 't' ใช้เวลาสองสามชั่วโมงในการคำนวณ ฉันได้ดำเนินการอินทิกรัลเหล่านี้ไปเล็กน้อยแล้วและผลลัพธ์ก็สมเหตุสมผลดี แต่ฉันต้องการแนวทางอื่น

  2. sech2(z)z

  3. ฉันได้ลองผสานรวมสัญลักษณ์เข้ากับสิ่งที่ไม่เป็นประโยชน์แล้ว ฉันได้ลองนวดอินทิเกรตและกลายเป็นรูปแบบย่อยได้มากขึ้นสำหรับ Mathematica แต่ความพยายามของฉันยังไม่สำเร็จ


อินทิกรัลที่ละเมิด

k4kξαEz

p12=(k4+12E)2+k2+α2p22=(k412E)2+k2+(1α)2

อินทิกรัลที่ฉันสนใจมีดังต่อไปนี้:

f(E;α,ξ)=dk40d(k2)[α(1+p12)3ξ/2(1+p22)ξ/2(1+p12(1+p12)2ξ)(1+p22(1+p22)2ξ)++(p1p2)]

ξ=1,2,30<α<1t 10


R+0.99if¯ff

1
f¯

f¯f¯α[1,2]0.1

ฉันเขียนมันขึ้นมา แต่ฉันค้นพบปัญหาเกี่ยวกับรหัสของฉันดังนั้นฉันจึงไม่แน่ใจอีกต่อไปว่าสิ่งที่ฉันคำนวณถูกต้อง คุณมีค่าอ้างอิงที่ใช้ได้จริงหรือไม่?
คิริลล์

คำตอบ:


5

หมายเหตุ: ฉันค่อนข้างกังวลในจุดนี้ที่ค่าอินทิกรัลศาสตร์มาให้ฉันเป็นของปลอม ฉันคิดว่ามันใช้งานได้เพราะมันให้ผลลัพธ์ที่ดูสมเหตุสมผลในเวลาอันสั้น แต่อาจเป็นกรณีที่วิธีการใช้งานนั้นมีความบิ่นหรือว่าฉันทำอะไรผิดไป ดังนั้นอาจเป็นไปได้ว่ารหัสด้านล่างไม่ทำงานเลยฉันไม่รู้ขออภัย

หมายเหตุ 2: มันรบกวนฉันดังนั้นฉันจึงเขียนรุ่นอื่น ( รหัสที่นี่ขออภัยเกี่ยวกับคุณภาพของรหัส) โดยใช้ Julia และ GSL และประเมินgใน 2 วินาทีกับคำตอบเดียวกับที่ Mathematica ให้ไว้ด้านล่าง ดังนั้นฉันคิดว่ารหัสน่าจะโอเค

ff¯

ประสบการณ์ที่ผ่านมาของฉันกับการรวมเชิงตัวเลขทำให้ฉันเชื่อว่าวิธีการทางคณิตศาสตร์ที่นักเล่นบางครั้งอาจมีประโยชน์อย่างน่าประทับใจ แต่การประเมินการแปลงฟูริเยร์เชิงตัวเลขและการรวมฟังก์ชั่นที่มีเหตุผลและพีชคณิต ทำให้ความคืบหน้าง่ายขึ้นโดยการเลือกอัลกอริทึมอย่างระมัดระวังและเล่นกับพารามิเตอร์ของพวกเขา นี่เป็นตัวเลือกที่ง่ายกว่าถ้ายากที่จะดูว่าจะทำให้เทคนิคทางคณิตศาสตร์ทำงานอย่างไร

ClearAll[ξ, α, p1, p2, fi, f, g];
ξ = 1;
α = 1/2;
fi[e_, k4_, kp_] := Module[{
   p1 = (k4^2 + e/2)^2 + kp^2 + α^2,
   p2 = (k4^2 - e/2)^2 + kp^2 + (1 - α)^2},
  2 * (* because integrate k4 over (0,∞) *)
   2 kp * (* because d(kp^2) *)
   (α (1 + p1)^(3 ξ/2) (1 + p2)^(ξ/2)) /
     ((1 + p1 (1 + p1)^(2 ξ)) (1 + p2 (1 + p2)^(2 ξ)))
  ]
f[e_?NumericQ] := NIntegrate[
   fi[e, k4, kp], {k4, 0, ∞}, {kp, 0, ∞},
   Method -> {Automatic, "SymbolicProcessing" -> 0}];

(* !!! This gives a bogus result: *)
gBogus[t_?NumericQ, e0_?NumericQ] := 
 NIntegrate[
  Exp[I t e]/(e^2 + e0^2) f[e], {e, -∞, ∞}, 
  Method -> {"DoubleExponentialOscillatory", 
    "SymbolicProcessing" -> 0}]

(* This gives *a* result, different from above despite being equivalent *)
g[t_?NumericQ, e0_?NumericQ] := 
 NIntegrate[Exp[I t e]/(e^2 + e0^2) f[e], {e, -\[Infinity], 0}, 
   Method -> {"DoubleExponentialOscillatory", 
     "SymbolicProcessing" -> 0},
   EvaluationMonitor :> Print["e=", e]] +
  NIntegrate[Exp[I t e]/(e^2 + e0^2) f[e], {e, 0, \[Infinity]}, 
   Method -> {"DoubleExponentialOscillatory", 
     "SymbolicProcessing" -> 0},
   EvaluationMonitor :> Print["e=", e]]

ผลลัพธ์:

In[18]:= Timing@g[10,1]
Out[18]= {78.0828, 0.0000704303 + 9.78009*10^-6 I}

In[338]:= Timing@g[1,1]
Out[338]= {14.3125,0.389542 +0.024758 I}

ฉันทำให้ Mathematica ใช้เวลาเป็นศูนย์ในการประมวลผลอินทิกรัลอย่างมีนัยสำคัญเพราะในกรณีนี้มันจะไม่สามารถหาอะไรที่เป็นประโยชน์เกี่ยวกับมันได้ ฉันยังบอกให้ใช้วิธีการสร้างพื้นที่สี่เหลี่ยมจัตุรัสโดยเฉพาะสำหรับอินทิกรัลที่สอง

ฉันเดาว่าทำไมการเล่นซอกับกลยุทธ์บูรณาการ (ดูNIntegrateIntegrationStrategies ) ทำงานเลยคือบางครั้ง Mathematica อาจเลือกกลยุทธ์ที่ไม่ดีโดยอัตโนมัติโดยไม่ได้ตั้งใจฆ่าประสิทธิภาพในขณะที่สิ่งใดก็ตามที่ฉันขอให้ทำ คุณสามารถลองขอความช่วยเหลือได้ที่https://mathematica.stackexchange.comพวกเขาอาจรู้เพิ่มเติมเกี่ยวกับการฝึกงานภายในของ Mathematic


k40g[t,e0]

fEp1p2EEk42×(0,)

p1p2Ep1,2k4

@ArturodonJuan ฉันคิดว่ามันไม่ได้แตกต่างกันอย่างแท้จริงกับคำตอบที่ได้ผลเพียงตัวเลขเท่านั้นที่จะเปลี่ยน
คิริลล์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.