2015-10-19 15 views
5

Recentemente ho sostituito Matlab con Python perché ero reale, eccitato da Sympy.Trasformata di Fourier continua con Python/Sympy (soluzione analitica)

ma ora ho il seguente problema:

Ho bisogno di un modo per calcolare in modo affidabile di Fourier continua trasforma con Python. Sympy ha problemi con soluzioni tra Diracs (delta-funzioni) come per esempio verificano per trigonometriche funzioni ecc

Ad esempio, se provo

fourier_transform(cos(x),x,v) 

l'uscita è 0 dove dovrebbe essere basata su la funzione delta di Dirac

Qualcuno sa, se questa parte di Sympy sta per essere migliorata o se c'è un altro modo per trovare analiticamente le trasformate di Fourier con Python?

Grazie per le risposte o qualsiasi consiglio in anticipo!

+0

Puoi fornire un esempio di integrale che non funziona con SymPy? – asmeurer

+0

sì, ad esempio la trasformata di Fourier di funzioni trigonometriche semplici come: fourier_transform (cos (x), x, v) -> restituisce 0 – oeh

risposta

3

Per quanto ne so, nessuno al momento sta lavorando su questo, anche se contributions are welcome.

Qualche consiglio che posso dare:

  • Se si imposta noconds=False in fourier_transform(), includerà le condizioni per le quali 0 è vero:

    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), ∞⎠│ < π⎠ 
    

    Queste condizioni non sono molto disponibile, eccetto forse per mostrare che 0 non è completamente sbagliato.

  • È possibile utilizzare FourierTransform per rappresentare una trasformata di Fourier non valutata. È possibile chiamare doit() su di esso per valutarla o rewrite(Integral) per ottenere la forma integrale:

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

mio miglior suggerimento per ora è quello di fare le trasformate di Fourier che SymPy al momento non può fare manualmente manipolando sia FourierTransform oggetti o integrali.

Problemi correlati