K i.xddlmZddlmZddlmZddlmZddlm Z ddl m Z GddeZ Gd d e Z y ) )_sympify) MatrixExpr)I)S)exp)sqrtcReZdZdZfdZedZedZdZdZ xZ S)DFTa Returns a discrete Fourier transform matrix. The matrix is scaled with :math:`\frac{1}{\sqrt{n}}` so that it is unitary. Parameters ========== n : integer or Symbol Size of the transform. Examples ======== >>> from sympy.abc import n >>> from sympy.matrices.expressions.fourier import DFT >>> DFT(3) DFT(3) >>> DFT(3).as_explicit() Matrix([ [sqrt(3)/3, sqrt(3)/3, sqrt(3)/3], [sqrt(3)/3, sqrt(3)*exp(-2*I*pi/3)/3, sqrt(3)*exp(2*I*pi/3)/3], [sqrt(3)/3, sqrt(3)*exp(2*I*pi/3)/3, sqrt(3)*exp(-2*I*pi/3)/3]]) >>> DFT(n).shape (n, n) References ========== .. [1] https://en.wikipedia.org/wiki/DFT_matrix c`t|}|j|t| ||}|SN)r _check_dimsuper__new__)clsnobj __class__s h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/matrices/expressions/fourier.pyrz DFT.__new__*s- QK qgoc1% c |jdS)Nr)argsselfs rz DFT.1sdiilrc2|j|jfSr )rrs rrz DFT.2s466466"2rc tdtjztz|jz }|||zzt |jz SNrrPirrrrijkwargsws r_entryz DFT._entry4s< 144 $&& !1Q3x$tvv,&&rc,t|jSr )IDFTrrs r _eval_inversezDFT._eval_inverse8sDFF|r) __name__ __module__ __qualname____doc__rpropertyrshaper&r) __classcell__)rs@rr r s0@ *+A 2 3E'rr ceZdZdZdZdZy)r(a Returns an inverse discrete Fourier transform matrix. The matrix is scaled with :math:`\frac{1}{\sqrt{n}}` so that it is unitary. Parameters ========== n : integer or Symbol Size of the transform Examples ======== >>> from sympy.matrices.expressions.fourier import DFT, IDFT >>> IDFT(3) IDFT(3) >>> IDFT(4)*DFT(4) I See Also ======== DFT c tdtjztz|jz }|| |zzt |jz Srrr!s rr&z IDFT._entryVs> 144 $&& !A2a4y4<''rc,t|jSr )r rrs rr)zIDFT._eval_inverseZs466{rN)r*r+r,r-r&r)rrr(r(<s2(rr(N)sympy.core.sympifyrsympy.matrices.expressionsrsympy.core.numbersrsympy.core.singletonr&sympy.functions.elementary.exponentialr(sympy.functions.elementary.miscellaneousrr r(r4rrr;s0'1 "690*0f3r