2015-10-19 5 views
5

Ich habe kürzlich Matlab durch Python ersetzt, weil ich echt war, y von Sympy begeistert.Kontinuierliche Fourier-Transformation mit Python/Sympy (Analytical Solution)

Aber jetzt habe ich folgendes Problem:

Ich brauche eine Art und Weise zuverlässig kontinuierliche fourier mit Python transformiert zu berechnen. Sympy hat Probleme mit Lösungen einschließlich Diracs (Delta-Funktionen), wie sie beispielsweise auftreten, für trig-Funktionen usw.

Zum Beispiel, wenn ich versuche,

fourier_transform(cos(x),x,v) 

die Ausgabe 0, wo sie auf der Grundlage sollten die Dirac-Delta-Funktion

Weiß jemand, ob dieser Teil von Sympy verbessert wird oder ob es eine andere Möglichkeit gibt, Fourier-Transformationen mit Python analytisch zu finden?

Vielen Dank für Antworten oder Beratung im Voraus!

+0

Können Sie ein Beispiel für ein Integral geben, das nicht mit SymPy funktioniert? – asmeurer

+0

ja, zum Beispiel die Fourier-Transformation von einfachen trigonometrischen Funktionen wie: fourier_transform (cos (x), x, v) -> ergibt 0 – oeh

Antwort

3

Soweit ich weiß, arbeitet derzeit niemand daran, obwohl contributions are welcome.

Einige Ratschläge kann ich geben:

  • Wenn Sie noconds=False in fourier_transform() gesetzt ist, wird es Bedingungen enthalten, für die 0 Wahr ist:

    In [26]: fourier_transform(cos(t),t,x, noconds=False) 
    Out[26]: 
    ⎛ │     ⎛ -ⅈ⋅π   2  ⎞│  │     ⎛ ⅈ⋅π   2  ⎞│ ⎞ 
    ⎝0, │periodic_argument⎝ℯ ⋅polar_lift (x), ∞⎠│ < π ∧ │periodic_argument⎝ℯ ⋅polar_lift (x), ∞⎠│ < π⎠ 
    

    Diese Bedingungen sind nicht sehr hilfreich, außer vielleicht um zu zeigen, dass 0 nicht völlig falsch ist.

  • Sie können FourierTransform verwenden, um eine unbewertete Fourier-Transformation darzustellen. Sie können doit() auf sie nennen es oder rewrite(Integral) zu bewerten die integrale Form zu erhalten:

    In [28]: FourierTransform(cos(t),t,x).rewrite(Integral) 
    Out[28]: 
    ∞ 
    ⌠ 
    ⎮ -2⋅ⅈ⋅π⋅t⋅x 
    ⎮ ℯ   ⋅cos(t) dt 
    ⌡ 
    -∞ 
    

Mein bester Vorschlag für jetzt die Fourier-Transformationen zu tun ist, dass SymPy derzeit nicht manuell durch Manipulation entweder FourierTransform tun kann Objekte oder die Integrale.