Spaces:
Sleeping
Sleeping
| """Known matrices related to physics""" | |
| from sympy.core.numbers import I | |
| from sympy.matrices.dense import MutableDenseMatrix as Matrix | |
| from sympy.utilities.decorator import deprecated | |
| def msigma(i): | |
| r"""Returns a Pauli matrix `\sigma_i` with `i=1,2,3`. | |
| References | |
| ========== | |
| .. [1] https://en.wikipedia.org/wiki/Pauli_matrices | |
| Examples | |
| ======== | |
| >>> from sympy.physics.matrices import msigma | |
| >>> msigma(1) | |
| Matrix([ | |
| [0, 1], | |
| [1, 0]]) | |
| """ | |
| if i == 1: | |
| mat = ( | |
| (0, 1), | |
| (1, 0) | |
| ) | |
| elif i == 2: | |
| mat = ( | |
| (0, -I), | |
| (I, 0) | |
| ) | |
| elif i == 3: | |
| mat = ( | |
| (1, 0), | |
| (0, -1) | |
| ) | |
| else: | |
| raise IndexError("Invalid Pauli index") | |
| return Matrix(mat) | |
| def pat_matrix(m, dx, dy, dz): | |
| """Returns the Parallel Axis Theorem matrix to translate the inertia | |
| matrix a distance of `(dx, dy, dz)` for a body of mass m. | |
| Examples | |
| ======== | |
| To translate a body having a mass of 2 units a distance of 1 unit along | |
| the `x`-axis we get: | |
| >>> from sympy.physics.matrices import pat_matrix | |
| >>> pat_matrix(2, 1, 0, 0) | |
| Matrix([ | |
| [0, 0, 0], | |
| [0, 2, 0], | |
| [0, 0, 2]]) | |
| """ | |
| dxdy = -dx*dy | |
| dydz = -dy*dz | |
| dzdx = -dz*dx | |
| dxdx = dx**2 | |
| dydy = dy**2 | |
| dzdz = dz**2 | |
| mat = ((dydy + dzdz, dxdy, dzdx), | |
| (dxdy, dxdx + dzdz, dydz), | |
| (dzdx, dydz, dydy + dxdx)) | |
| return m*Matrix(mat) | |
| def mgamma(mu, lower=False): | |
| r"""Returns a Dirac gamma matrix `\gamma^\mu` in the standard | |
| (Dirac) representation. | |
| Explanation | |
| =========== | |
| If you want `\gamma_\mu`, use ``gamma(mu, True)``. | |
| We use a convention: | |
| `\gamma^5 = i \cdot \gamma^0 \cdot \gamma^1 \cdot \gamma^2 \cdot \gamma^3` | |
| `\gamma_5 = i \cdot \gamma_0 \cdot \gamma_1 \cdot \gamma_2 \cdot \gamma_3 = - \gamma^5` | |
| References | |
| ========== | |
| .. [1] https://en.wikipedia.org/wiki/Gamma_matrices | |
| Examples | |
| ======== | |
| >>> from sympy.physics.matrices import mgamma | |
| >>> mgamma(1) | |
| Matrix([ | |
| [ 0, 0, 0, 1], | |
| [ 0, 0, 1, 0], | |
| [ 0, -1, 0, 0], | |
| [-1, 0, 0, 0]]) | |
| """ | |
| if mu not in (0, 1, 2, 3, 5): | |
| raise IndexError("Invalid Dirac index") | |
| if mu == 0: | |
| mat = ( | |
| (1, 0, 0, 0), | |
| (0, 1, 0, 0), | |
| (0, 0, -1, 0), | |
| (0, 0, 0, -1) | |
| ) | |
| elif mu == 1: | |
| mat = ( | |
| (0, 0, 0, 1), | |
| (0, 0, 1, 0), | |
| (0, -1, 0, 0), | |
| (-1, 0, 0, 0) | |
| ) | |
| elif mu == 2: | |
| mat = ( | |
| (0, 0, 0, -I), | |
| (0, 0, I, 0), | |
| (0, I, 0, 0), | |
| (-I, 0, 0, 0) | |
| ) | |
| elif mu == 3: | |
| mat = ( | |
| (0, 0, 1, 0), | |
| (0, 0, 0, -1), | |
| (-1, 0, 0, 0), | |
| (0, 1, 0, 0) | |
| ) | |
| elif mu == 5: | |
| mat = ( | |
| (0, 0, 1, 0), | |
| (0, 0, 0, 1), | |
| (1, 0, 0, 0), | |
| (0, 1, 0, 0) | |
| ) | |
| m = Matrix(mat) | |
| if lower: | |
| if mu in (1, 2, 3, 5): | |
| m = -m | |
| return m | |
| #Minkowski tensor using the convention (+,-,-,-) used in the Quantum Field | |
| #Theory | |
| minkowski_tensor = Matrix( ( | |
| (1, 0, 0, 0), | |
| (0, -1, 0, 0), | |
| (0, 0, -1, 0), | |
| (0, 0, 0, -1) | |
| )) | |
| def mdft(n): | |
| r""" | |
| .. deprecated:: 1.9 | |
| Use DFT from sympy.matrices.expressions.fourier instead. | |
| To get identical behavior to ``mdft(n)``, use ``DFT(n).as_explicit()``. | |
| """ | |
| from sympy.matrices.expressions.fourier import DFT | |
| return DFT(n).as_mutable() | |