Tôi có một hàm được định nghĩa bằng số nằm giữa Gaussian và Lorentzian. Nó phân rã chậm hơn nhiều so với Gaussian, nhưng vẫn nhanh hơn công suất nghịch đảo đơn giản.
Tôi cần tính toán biến đổi Fourier của nó cho lớn . Vì các lệnh gọi hàm đắt tiền về mặt tính toán, tôi xác định phép nội suy của - gọi nó là - trên một phạm vi lớn của , -40 <x <40 , và sử dụng nó cho tích phân của tôi.t g ( x ) g ( x ) g int ( x ) x - 40 < x < 40
Tuy nhiên, khi tôi tính toán một xấp xỉ với biến đổi Fourier, tôi nhận được một số dao động kỳ lạ mà ban đầu tôi không mong đợi.
Như tôi đã chỉ ra trong hình trên, các dao động có "chu kỳ" khoảng 15,7. Dự đoán đầu tiên của tôi sẽ là đây có thể là một tạo tác của tính chất hủy xen kẽ của tích phân, nhưng điều đó không giải thích được "khoảng thời gian" quan sát được của ngày 15.7.
đó chính xác là một yếu tố của 100 khác với những gì tôi quan sát (vâng, tôi đã kiểm tra rằng tôi đã xác định chính xác các tích phân và trục ngang của mình). Làm sao chuyện này có thể?
Chỉnh sửa # 1: Chi tiết nội suy
Tôi đang nội suy với tích hợp sẵn của Mathicala Interpolation
, nội suy giữa các điểm liên tiếp với một đường cong hình khối (vì vậy tại mỗi điểm lên đến đạo hàm 2 được xác định). Tôi đặc biệt nội suy hàm trong phạm vi trong các bước của .
Trong thực tế, bây giờ khi tôi viết điều đó, tôi nhận ra nó rất có thể là một tạo tác của việc lấy mẫu hữu hạn của tôi, bởi vì:
Tôi sẽ đánh giá cao bất kỳ trợ giúp thêm về điều này, đặc biệt là một cách tốt để khắc phục vấn đề này.
Chỉnh sửa # 2: Hàm
h[x_?NumericQ, En_?NumericQ, pz_?NumericQ] :=
1./(En^2 + pz^2 + 0.24^2)*
NIntegrate[((Sqrt[
0.316/(1. +
1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1.*0.316/(1. +
1.2*((k4 - 0.5*En)^2 + kp + ((1. - x)*pz)^2))^1.])*((1. -
x)*0.316/(1. + 1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1. +
x*0.316/(1. +
1.2*((k4 - 0.5*En)^2 + kp + ((1. - x)*pz)^2))^1.))/(((k4 +
0.5*En)^2 +
kp + (x*pz)^2 + (0.316/(1. +
1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1.)^2)*((k4 -
0.5*En)^2 +
kp + ((1. - x)*
pz)^2 + (0.316/(1. +
1.2*((k4 - 0.5*En)^2 +
kp + ((1. - x)*
pz)^2))^1.)^2)), {k4, -\[Infinity], \[Infinity]}, {kp,
0, \[Infinity]}, Method -> "LocalAdaptive",
MaxRecursion ->
100]; (*LocalAdaptive seems to work slightly faster *)
g[x_]:=h[0.5,x,2.]; (*this is the function*)
Integrate
việc xây dựng các phép nội suy thích nghi (và tất cả các ý nghĩ đã đi vào thiết kế) với của riêng bạn, đó có lẽ là một ý tưởng tồi.
Module[{n=32,L=10},Exp[InterpolatingPolynomial[Table[{x,Log[g[x]]},{x,-L Cos[(π N@Range[1,2n-1,2])/(2n)]}],x]]]