Пример #1
0
def vsprint(expr, **settings):
    r"""Function for displaying expressions generated in the
    sympy.physics vector package.

    Returns the output of vprint() as a string.

    Parameters
    ==========

    expr : valid sympy object
        SymPy expression to print
    settings : args
        Same as print for SymPy

    Examples
    ========

    >>> from sympy.physics.vector import vsprint, dynamicsymbols
    >>> u1, u2 = dynamicsymbols('u1 u2')
    >>> u2d = dynamicsymbols('u2', level=1)
    >>> print("%s = %s" % (u1, u2 + u2d))
    u1(t) = u2(t) + Derivative(u2(t), t)
    >>> print("%s = %s" % (vsprint(u1), vsprint(u2 + u2d)))
    u1 = u2 + u2'

    """

    pr = VectorStrPrinter(settings)
    return pr.doprint(expr)
Пример #2
0
def vsprint(expr, **settings):
    r"""Function for displaying expressions generated in the
    sympy.physics vector package.

    Returns the output of vprint() as a string.

    Parameters
    ==========

    expr : valid sympy object
        SymPy expression to print
    settings : args
        Same as print for SymPy

    Examples
    ========

    >>> from sympy.physics.vector import vsprint, dynamicsymbols
    >>> u1, u2 = dynamicsymbols('u1 u2')
    >>> u2d = dynamicsymbols('u2', level=1)
    >>> print("%s = %s" % (u1, u2 + u2d))
    u1(t) = u2(t) + Derivative(u2(t), t)
    >>> print("%s = %s" % (vsprint(u1), vsprint(u2 + u2d)))
    u1 = u2 + u2'

    """

    pr = VectorStrPrinter(settings)
    return pr.doprint(expr)
Пример #3
0
 def __str__(self, printer=None):
     """Printing method. """
     from sympy.physics.vector.printing import VectorStrPrinter
     ar = self.args  # just to shorten things
     if len(ar) == 0:
         return str(0)
     ol = []  # output list, to be concatenated to a string
     for i, v in enumerate(ar):
         for j in 0, 1, 2:
             # if the coef of the basis vector is 1, we skip the 1
             if ar[i][0][j] == 1:
                 ol.append(' + ' + ar[i][1].str_vecs[j])
             # if the coef of the basis vector is -1, we skip the 1
             elif ar[i][0][j] == -1:
                 ol.append(' - ' + ar[i][1].str_vecs[j])
             elif ar[i][0][j] != 0:
                 # If the coefficient of the basis vector is not 1 or -1;
                 # also, we might wrap it in parentheses, for readability.
                 arg_str = VectorStrPrinter().doprint(ar[i][0][j])
                 if isinstance(ar[i][0][j], Add):
                     arg_str = "(%s)" % arg_str
                 if arg_str[0] == '-':
                     arg_str = arg_str[1:]
                     str_start = ' - '
                 else:
                     str_start = ' + '
                 ol.append(str_start + arg_str + '*' + ar[i][1].str_vecs[j])
     outstr = ''.join(ol)
     if outstr.startswith(' + '):
         outstr = outstr[3:]
     elif outstr.startswith(' '):
         outstr = outstr[1:]
     return outstr
Пример #4
0
    def __str__(self, printer=None, order=True):
        """Printing method. """
        from sympy.physics.vector.printing import VectorStrPrinter

        if not order or len(self.args) == 1:
            ar = list(self.args)
        elif len(self.args) == 0:
            return str(0)
        else:
            d = {v[1]: v[0] for v in self.args}
            keys = sorted(d.keys(), key=lambda x: x.index)
            ar = []
            for key in keys:
                ar.append((d[key], key))
        ol = []  # output list, to be concatenated to a string
        for i, v in enumerate(ar):
            for j in 0, 1, 2:
                # if the coef of the basis vector is 1, we skip the 1
                if ar[i][0][j] == 1:
                    ol.append(" + " + ar[i][1].str_vecs[j])
                # if the coef of the basis vector is -1, we skip the 1
                elif ar[i][0][j] == -1:
                    ol.append(" - " + ar[i][1].str_vecs[j])
                elif ar[i][0][j] != 0:
                    # If the coefficient of the basis vector is not 1 or -1;
                    # also, we might wrap it in parentheses, for readability.
                    arg_str = VectorStrPrinter().doprint(ar[i][0][j])
                    if isinstance(ar[i][0][j], Add):
                        arg_str = "(%s)" % arg_str
                    if arg_str[0] == "-":
                        arg_str = arg_str[1:]
                        str_start = " - "
                    else:
                        str_start = " + "
                    ol.append(str_start + arg_str + "*" + ar[i][1].str_vecs[j])
        outstr = "".join(ol)
        if outstr.startswith(" + "):
            outstr = outstr[3:]
        elif outstr.startswith(" "):
            outstr = outstr[1:]
        return outstr