[Python] problem with sympy.parsing.mathematica.parse_mathematica

Discussão em 'Python' iniciado por Stack, Março 19, 2025.

  1. Stack

    Stack Membro Participativo

    I have a very simple case but it won't run. I am doing this test because I have some rather compelx functions exported from Mathematica and I want to make sure this method works.

    from sympy.parsing.mathematica import parse_mathematica
    test_str = "(1 - Cos[eta]*Cosh[zeta])/Rp"
    print(parse_mathematica(test_str))


    and the error says:

    /opt/anaconda3/envs/jet_current/bin/python /Users/yangyangzhang/Library/CloudStorage/OneDrive-Personal/Documents/Documents/Postdoc/exercises/WEST/VacTH_Mathematica/VacTH.py
    Traceback (most recent call last):
    File "/Users/yangyangzhang/Library/CloudStorage/OneDrive-Personal/Documents/Documents/Postdoc/exercises/WEST/VacTH_Mathematica/VacTH.py", line 3, in <module>
    print(parse_mathematica(test_str))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/parsing/mathematica.py", line 83, in parse_mathematica
    return parser.parse(s)
    ^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/parsing/mathematica.py", line 538, in parse
    s4 = self._from_fullformlist_to_sympy(s3)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/parsing/mathematica.py", line 1079, in _from_fullformlist_to_sympy
    return recurse(full_form_list)
    ^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/parsing/mathematica.py", line 1075, in recurse
    return head(*[recurse(arg) for arg in expr[1:]])
    ^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/parsing/mathematica.py", line 1075, in recurse
    return head(*[recurse(arg) for arg in expr[1:]])
    ^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/parsing/mathematica.py", line 1075, in recurse
    return head(*[recurse(arg) for arg in expr[1:]])
    ^^^^^^^^^^^^
    [Previous line repeated 2 more times]
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/core/cache.py", line 72, in wrapper
    retval = cfunc(*args, **kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/core/function.py", line 466, in __new__
    result = super().__new__(cls, *args, **options)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/core/cache.py", line 72, in wrapper
    retval = cfunc(*args, **kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/core/function.py", line 307, in __new__
    evaluated = cls.eval(*args)
    ^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/functions/elementary/hyperbolic.py", line 409, in eval
    i_coeff = _imaginary_unit_as_coefficient(arg)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/anaconda3/envs/jet_current/lib/python3.12/site-packages/sympy/functions/elementary/trigonometric.py", line 38, in _imaginary_unit_as_coefficient
    return arg.as_coefficient(S.ImaginaryUnit)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    TypeError: Expr.as_coefficient() missing 1 required positional argument: 'expr'

    Process finished with exit code 1

    Continue reading...

Compartilhe esta Página