これらの振動は何ですか?


8

ガウス関数とローレンツ関数の中間の関数数値で定義しています。ガウス分布よりもはるかに遅く減衰しますが、単純な逆指数よりも高速です。g(x)

ここに画像の説明を入力してください

フーリエ変換を大きなに対して計算する必要があります。への関数呼び出しは計算コストが高いため、補間を定義します-これをと呼び -いくつかの巨大な範囲、、それを私の積分に使用します。T G X G X G INTX X - 40 < X < 40f(t)F[g(x)](t)tg(x)g(x)gint(x)x40<x<40

f(t)=cos(tx)g(x)dxLLcos(tx)gint(x)dx

しかし、フーリエ変換の近似を計算すると、最初は予期していなかった奇妙な振動が発生します。

ここに画像の説明を入力してください

上の図で示したように、振動の「周期」は約15.7です。私の最初の推測は、これは積分の相殺の交互の性質のアーティファクトであるかもしれないが、それは15.7の観察された「期間」を説明しないでしょう。

Tguess=2πL0.157

これは、私が観察するものとはまったく異なる100の因数です(はい、積分と水平軸を正しく定義したことを確認しました)。これはどうやってできるの?


編集#1:補間の詳細

私は、Mathematicaの組み込みInterpolationで補間しています。これは、3次曲線で連続するポイント間を補間します(したがって、各ポイントで2導関数まで定義されます)。具体的には、関数を範囲でステップで補間しています。 GX-40<X<40DX=40 / 100=0.4ndg(x)40<x<40dx=40/100=0.4

実際、私がそれを書いている今、私はそれが私の有限サンプリングの人工物である可能性が非常に高いことに気づきました。

Tguess #2=2πdx=2π0.4=15.7

私はこれについてさらに助けてくれれば幸いです、特にこの問題を克服する良い方法です。


編集#2:関数g(x)

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*)

どのような補間を使用していますか?このような大きなドメインで正確に補間することは実際には最も簡単な機能ではありません。
アントンメンショフ

@AntonMenshov最新の編集を参照してください。
アルトゥーロドンファン

4
すべての数値積分法は基本的に関数の内挿を構築し、それを正確に積分することを指摘したいので、関数を自分で内挿することで、実質Integrate的にの内挿の適応構造(およびその中に入るすべての考え)を置き換えますデザイン)あなた自身のもので、これはおそらく悪い考えです。
キリル2018

2
もう一つのアイデア:どのように素敵与え、のチェビシェフシリーズ(行儀の高次多項式補間の一種)を構築しようとしている上の(そうのような:、ないように注意してくださいどのように多くの必要なノード)、そしてそれを統合します。(これは、デモのためだけにチェビシェフ近似を計算する良い方法ではありません。)glogg(x)[L,L]Module[{n=32,L=10},Exp[InterpolatingPolynomial[Table[{x,Log[g[x]]},{x,-L Cos[(π N@Range[1,2n-1,2])/(2n)]}],x]]]
Kirill

1
また、被積分関数(gist.github.com/ikirill/931dbf6fb3581f7d66353b74c4743cd3)をコンパイルすると、ここでのより困難な問題とは関係なく、約8倍高速になると思います。
キリル2018

回答:


5

それが役立つ場合に備えて、私は別のアイデアに言及したいと思います。をで置き換えることによる切り捨てエラーは、のオーダーです。 省略した間隔を1つ取り、部品による積分を使用し、はよりも速く減衰すると仮定しました。これは通常妥当です。LLgg

Lcos(tx)g(x)dx=1tsin(tx)g(x)|LLsintxtg(x)dx=1Lg(L)sin(tL)+asymptotically smaller terms.
gg

場合、指数関数的またはガウスのようなパワーのように減衰していない、そして崩壊十分な速フーリエ積分の打ち切り誤差の大手用語を抑制するためではないかもしれない、とあなたがして、振動のエラーが表示されます。重要な結果の1つは、補間ステップが完全に正確であっても、このエラーが残ることです。g L g(L)g(L)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.