Phục hồi số lượng phần tưởng tượng của tiếp tục phân tích từ phần thực


11

Hoàn cảnh của tôi.

Tôi có một hàm của một biến phức được xác định thông qua một tích phân phức tạp. Điều tôi quan tâm là giá trị của hàm này trên trục ảo. Tôi có quyền truy cập số vào chức năng này trên dải băng sau: . Chính thức biểu thức tích phân là khác nhau bên ngoài miền này, và do đó tôi cần một sự tiếp tục phân tích. Để tổng hợp tình huống của tôi trong một bức tranh,z = ( x , y ) ( - , ) × [ - 1 , 1 ]f(z)z=(x,y)(,)×[1,1]

nhập mô tả hình ảnh ở đây

Đây là những gì tôi biết về trên dải băng này từ số:f(z)

  1. Nó đồng thời đối xứng về các trục tưởng tượng và thực.

  2. Nó phân rã về 0 tại .Re(z)

  3. Nó thổi lên gần . Nó có thể là cực hoặc một điểm nhánh, tôi không biết. Tôi nghi ngờ bản chất của điểm kỳ dị này (và có thể là tất cả các điểm kỳ dị biệt lập khác của sự tiếp tục phân tích) phụ thuộc vào tham số cụ thể của hàm này (xem tích phân bên dưới để biết chi tiết)ξz=±iξ

Trong thực tế, nó trông rất giống với một hoặc khi được vẽ. Đây là một cốt truyện của phần thực:1 / ( 1 + z 2 ) 2 nsech2(z)1/(1+z2)2n

nhập mô tả hình ảnh ở đây

Câu hỏi của tôi là, với lượng thông tin tuyệt đối mà tôi có về hàm (tổng số truy cập vào số đó trên dải băng đó), có cách nào để tôi tính toán một cách gần đúng cho hàm này dọc theo trục ảo không? Tôi đang sử dụng Mathicala.

Lý do tôi quan tâm đến các giá trị dọc theo trục tưởng tượng là vì tôi cần đánh giá biến đổi Fourier sau của hàm này:

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

đối với các giá trị lớn của , trong trường hợp của tôi thực sự là theo thứ tự . Mặc dù tôi biết rõ về integrand, biến đổi Fourier này có tính dao động ghê gớm, vì vậy cách khác duy nhất tôi biết cách tính toán này là bằng tích hợp Đường viền.10t10


Những gì tôi đã thử.

  1. Tôi thực sự đã cố gắng tính tích phân dao động cao cuối cùng, eq. (1). Đánh giá eq. (1) cho một giá trị 't' mất vài giờ để tính toán. Tôi đã thực hiện một vài trong số các tích phân này và kết quả thực sự có ý nghĩa, nhưng tôi muốn một phương pháp thay thế.

  2. Tôi đã thử phân tích tiếp tục với các xấp xỉ Pade, nhưng điều này cũng tốn kém về mặt tính toán, nhưng không nhiều bằng đánh giá trực tiếp. Quan trọng hơn, tôi không thể thiết lập tụ với thứ tự tăng dần của approximants (cũng không phải là bình quân tiền một phần của họ!), Đó là trái ngược với cách thử nghiệm của tôi với các chức năng đơn giản như đi (I có thể dễ dàng nhận được sự hội tụ rất nhanh trên phạm vi rộng của mặt phẳng phức tạp với các chức năng kiểm tra đơn giản).zsech2(z)z

  3. Tôi đã thử tích hợp biểu tượng vô ích. Tôi đã thử mát xa tích phân thành một dạng dễ tiêu hóa hơn cho Mathematica, nhưng những nỗ lực của tôi đã không thành công.


Các vi phạm tích phân.

Đặt , , và là các số thực dương trong khi là số phức chúng ta quan tâm (đóng vai trò của trong cuộc thảo luận trước). Định nghĩa:k ξ α E zk4kξαEz

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

Tích phân tôi quan tâm là:

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

nơi tôi đã loại bỏ ký hiệu phụ thuộc chức năng trong tích phân cho ngắn gọn. Tôi đặc biệt quan tâm đến các giá trị , phạm vi và (như đã nêu ở trên) biến đổi Fourier (1) cho .ξ=1,2,30<α<1t 10


Là tiếp tục phân tích số chắc chắn hữu ích ở đây? Thay vào đó, bạn có thể đánh giá nó dọc theo , trong đó tích phân của sẽ phân rã theo cấp số nhân nhưng có sẵn trực tiếp không? Một điều đáng ngạc nhiên là không thể đánh giá tích phân dao động, bởi vì thông thường các phương pháp chuyên biệt cho tích phân dao động sẽ có thể xử lý một hàm phân rã nhanh chóng đa thức như . Tôi nói điều này bởi vì sau khi chơi với tích phân trong Mathematica tôi lo ngại rằng việc tiếp tục phân tích số có thể xảy ra là một con hẻm mù. R+0.99if¯ff
Kirill

1
Tôi đã cố gắng thực hiện tích phân trực tiếp trong Mathematica và tôi đã nhận được nó để đánh giá trong 20 giây trên máy tính xách tay của mình: không tuyệt vời, nhưng cũng không phải là hàng giờ. Nó sẽ giúp bạn nếu tôi viết ra một câu trả lời cho cách đánh giá trực tiếp? f¯
Kirill

@Kirill Sau nhiều lần thất bại trong việc tiếp tục phân tích số, tôi có khuynh hướng hoàn toàn đồng ý với nhận xét đầu tiên của bạn. Xin vui lòng, nếu bạn có thể đánh giá trong 20 giây, tôi sẽ rất biết ơn vì đã viết lên. Nhân tiện, có thể giúp thêm rằng thực ra đó không chỉ là một đánh giá duy nhất về đã mất hàng giờ, mà là khoảng 30 đánh giá (đánh giá cho với kích thước khoảng ). Một đánh giá duy nhất mặc dù đã đưa tôi khoảng 14 phút. ˉ f α[-1,2]0,1f¯f¯α[1,2]0.1
Arturo don Juan

Tôi đã viết nó lên, nhưng tôi phát hiện ra một vấn đề với mã của mình, vì vậy tôi không còn chắc chắn liệu những gì tôi đã tính có hợp lệ hay không. Bạn có bất kỳ giá trị tham chiếu hợp lệ được biết đến?
Kirill

Câu trả lời:


5

Lưu ý: Tôi hơi lo lắng vào thời điểm này rằng các giá trị tích phân mà Mathicala mang lại cho tôi là không có thật. Tôi nghĩ rằng nó đang hoạt động vì nó cho kết quả trông có vẻ hợp lý trong một thời gian ngắn, nhưng có thể là phương pháp mà nó cố gắng sử dụng là lỗi hoặc tôi đã làm gì đó sai. Vì vậy, có thể là đoạn mã dưới đây hoàn toàn không hoạt động, tôi không biết, xin lỗi.

Lưu ý 2: Nó làm phiền tôi, vì vậy tôi đã viết một phiên bản khác ( mã ở đây , xin lỗi về chất lượng mã) bằng cách sử dụng Julia và GSL, và nó đánh giá gtrong 2 giây cho cùng một câu trả lời mà Mathicala đưa ra dưới đây. Vì vậy, tôi nghĩ rằng mã có thể là ổn.

Lý do chính khiến tôi nghi ngờ về việc tiếp tục phân tích số là vì tích phân của bạn thực sự trông khá tốt trong thử nghiệm giới hạn của tôi. Cụ thể, các tích phân của cả và phân rã một cách đa thức và khá nhanh chóng, và đây chính xác là thứ mà các thói quen bậc hai thông thường được thiết kế để xử lý tốt. Cũng không có điểm kỳ dị khó khăn.ˉ fff¯

Kinh nghiệm trong quá khứ của tôi với tích hợp số khiến tôi tin rằng các phương pháp toán học fancier đôi khi có thể hữu ích một cách ngoạn mục, nhưng việc đánh giá các biến đổi Fourier số và tích hợp các hàm hợp lý và đại số là thuật toán tích hợp số, vì vậy người ta có thể thường xuyên thực hiện dễ dàng bằng cách chọn các thuật toán cẩn thận và chơi với các tham số của chúng. Đây thường là tùy chọn dễ dàng hơn nếu khó thấy cách làm cho kỹ thuật toán học hoạt động tốt.

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]]

Kết quả:

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}

Tôi đã làm cho Mathicala dành không có thời gian cho việc tiền xử lý một cách tượng trưng, ​​bởi vì trong trường hợp này, nó sẽ không thể tìm ra bất cứ điều gì hữu ích về nó. Tôi cũng nói với nó để sử dụng cụ thể một phương pháp bậc hai dao động cho tích phân thứ hai.

Tôi đoán cho lý do tại sao không quan trọng một cách ngẫu nhiên với chiến lược hội nhập (xem NIntegrateIntegrationStrategies ) hoạt động ở tất cả là đôi khi Mathematica có thể vô tình chọn một chiến lược xấu tự động, giết chết hiệu suất, trong khi bất cứ điều gì tôi yêu cầu nó làm là ít nhất một chút cắn thậm chí có ý nghĩa nếu không tối ưu. Bạn cũng có thể xem xét nhận trợ giúp tại https://mathIALa.stackexchange.com , họ có thể biết nhiều hơn về nội bộ của Mathicala ở đó.


Cảm ơn, tôi đã không thực sự nghĩ về việc thay đổi các lựa chọn / chiến lược của NIntegrate. Oh và btw tích phân trên đi từ đến , không phải từ đến . Kết quả phải là một hàm đối xứng / chẵn và do đó không nên có phần ảo trong Biến đổi Fourier. Ngoài ra, tôi không thực sự hiểu lý do tại sao bạn xác định cách bạn đã làm (ở cuối mã của bạn). Tất cả những thứ đó bắt đầu với "Ev AssessmentMonitor" đầu tiên để làm gì? - 0 k40g[t,e0]
Arturo don Juan

@ArturodonJuan Bạn có chắc chắn là đối xứng trong ? Các quyền hạn trong tử số là khác nhau và và không thể thay thế cho nhau theo . Chức năng của bạn không đối xứng với tôi, trừ khi tôi làm sai. Tôi đã thay đổi tích phân trên thành tích phân trên để đơn giản. Ev AssessmentMonitor còn lại từ việc gỡ lỗi nó. E p 1 p 2 E - E k 4 2 × ( 0 , )fEp1p2EEk42×(0,)
Kirill

(1) Ồ vâng, xin lỗi bạn đã đúng. Biểu hiện thực tế của tôi / không thể thiếu quan tâm là một trong tôi đưa lên cộng với , mà làm cho nó đối xứng trong . Tôi nên đã làm rõ rằng trong bài viết gốc của tôi. (2) Tôi đã phạm sai lầm trong định nghĩa của tôi về . Chỉ nên có một sức mạnh của trong các dấu ngoặc đơn đó, không phải hai. Tôi chỉ thay đổi điều đó. E p 1 , 2 k 4p1p2Ep1,2k4
Arturo don Juan

@ArturodonJuan Tôi nghĩ rằng nó không có sự khác biệt thực sự với cách câu trả lời hoạt động, chỉ có những con số sẽ thay đổi.
Kirill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.