Did I find the right examples for you? yes no      Crawl my project      Python Jobs

All Samples(23)  |  Call(22)  |  Derive(0)  |  Import(1)
Computes the fidelity between two quantum states
(http://en.wikipedia.org/wiki/Fidelity_of_quantum_states)

The arguments provided to this function should be a square matrix or a
Density object. If it is a square matrix, it is assumed to be diagonalizable.

Parameters:
==========

state1, state2 : a density matrix or Matrix(more...)

        def fidelity(state1, state2):
    """ Computes the fidelity between two quantum states
    (http://en.wikipedia.org/wiki/Fidelity_of_quantum_states)

    The arguments provided to this function should be a square matrix or a
    Density object. If it is a square matrix, it is assumed to be diagonalizable.

    Parameters:
    ==========

    state1, state2 : a density matrix or Matrix


    Examples:
    =========

    >>> from sympy import S, sqrt
    >>> from sympy.physics.quantum.dagger import Dagger
    >>> from sympy.physics.quantum.spin import JzKet
    >>> from sympy.physics.quantum.density import Density, fidelity
    >>> from sympy.physics.quantum.represent import represent
    >>>
    >>> up = JzKet(S(1)/2,S(1)/2)
    >>> down = JzKet(S(1)/2,-S(1)/2)
    >>> amp = 1/sqrt(2)
    >>> updown = (amp * up) + (amp * down)
    >>>
    >>> # represent turns Kets into matrices
    >>> up_dm = represent(up * Dagger(up))
    >>> down_dm = represent(down * Dagger(down))
    >>> updown_dm = represent(updown * Dagger(updown))
    >>>
    >>> fidelity(up_dm, up_dm)
    1
    >>> fidelity(up_dm, down_dm) #orthogonal states
    0
    >>> fidelity(up_dm, updown_dm).evalf().round(3)
    0.707

    """
    state1 = represent(state1) if isinstance(state1, Density) else state1
    state2 = represent(state2) if isinstance(state2, Density) else state2

    if (not isinstance(state1, Matrix) or
            not isinstance(state2, Matrix)):
        raise ValueError("state1 and state2 must be of type Density or Matrix "
                         "received type=%s for state1 and type=%s for state2" %
                         (type(state1), type(state2)))

    if ( state1.shape != state2.shape and state1.is_square):
        raise ValueError("The dimensions of both args should be equal and the "
                         "matrix obtained should be a square matrix")

    sqrt_state1 = state1**Rational(1, 2)
    return Tr((sqrt_state1 * state2 * sqrt_state1)**Rational(1, 2)).doit()
        


src/s/y/sympy-HEAD/sympy/physics/quantum/tests/test_density.py   sympy(Download)
from sympy import pprint, latex, symbols, S, log
from sympy.matrices import Matrix
from sympy.core.trace import Tr
from sympy.external import import_module
from sympy.physics.quantum.density import Density, entropy, fidelity
    updown_dm = represent(updown * Dagger(updown))
 
    assert abs(fidelity(up_dm, up_dm) - 1) < 1e-3
    assert fidelity(up_dm, down_dm) < 1e-3
    assert abs(fidelity(up_dm, updown_dm) - (S(1)/sqrt(2))) < 1e-3
    assert abs(fidelity(updown_dm, down_dm) - (S(1)/sqrt(2))) < 1e-3