복붙노트

[PYTHON] python에서 sympy를 사용하여 표현식을 계산하는 방법

PYTHON

python에서 sympy를 사용하여 표현식을 계산하는 방법

Python에서 sympy를 사용하여 아래의 식을 계산해야합니까?

exp = '(a+b)*40-(c-a)/0.5'

a = 6, b = 5, c = 2이 경우 Python에서 sympy를 사용하여 표현식을 계산하는 방법은? 도와주세요.

해결법

  1. ==============================

    1.설명서는 http://docs.sympy.org/에 있습니다. 당신은 정말로 그것을 읽어야합니다!

    설명서는 http://docs.sympy.org/에 있습니다. 당신은 정말로 그것을 읽어야합니다!

    표현식을 "계산"하려면 다음과 같이 작성하십시오.

    from sympy import Symbol
    a = Symbol("a")
    b = Symbol("b")
    c = Symbol("c")
    exp = (a+b)*40-(c-a)/0.5
    

    그리고 그게 다야. "calculate"로 다른 것을 의미한다면, exp = 0도 풀 수 있습니다 :

    sympy.solve(exp)
    > {a: [0.0476190476190476*c - 0.952380952380952*b],
    >  b: [0.05*c - 1.05*a],
    >  c: [20.0*b + 21.0*a]}
    

    그 외 모든 것에 대해서는 정말로 문서를 읽어야합니다. http://docs.sympy.org/0.7.1/tutorial.html#tutorial에서 시작하십시오.

    업데이트 : 질문에 a, b, c의 값을 추가 했으므로 솔루션에이를 추가 할 수 있습니다.

    exp.evalf(subs={a:6, b:5, c:2})
    
  2. ==============================

    2.sympy.parsing.sympy_parser 모듈의 parse_expr () 함수를 사용하여 문자열을 sympy 표현식으로 변환 할 수 있습니다.

    sympy.parsing.sympy_parser 모듈의 parse_expr () 함수를 사용하여 문자열을 sympy 표현식으로 변환 할 수 있습니다.

    >>> from sympy.abc import a, b, c
    >>> from sympy.parsing.sympy_parser import parse_expr
    >>> sympy_exp = parse_expr('(a+b)*40-(c-a)/0.5')
    >>> sympy_exp.evalf(subs={a:6, b:5, c:2})
    448.000000000000
    
  3. ==============================

    3.위의 내용에 대해서는 이미 알고 있었지만 알 수없는 기호가있는 문자열 식을 사용하고 이러한 기호에 대한 액세스가 필요한 경우 여기에 사용한 코드가 있습니다.

    위의 내용에 대해서는 이미 알고 있었지만 알 수없는 기호가있는 문자열 식을 사용하고 이러한 기호에 대한 액세스가 필요한 경우 여기에 사용한 코드가 있습니다.

    # sympy.S is a shortcut to sympify
    from sympy import S, Symbol
    
    # load the string as an expression
    expression = S('avar**2 + 3 * (anothervar / athirdvar)')
    
    # get the symbols from the expression and convert to a list
    # all_symbols = ['avar', 'anothervar', 'athirdvar']
    all_symbols = [str(x) for x in expression.atoms(Symbol)]
    
    # do something with the symbols to get them into a dictionary of values
    # then we can find the result. e.g.
    # symbol_vals = {'avar': 1, 'anothervar': 2, 'athirdvar': 99}
    result = expression.subs(symbols_vals)
    
  4. ==============================

    4.음, eval은 악이긴하지만, 프로그램에 a, b, c가 정의되어 있고 eval을 사용하는 것이 안전하다고 확신 할 수 있다면 sympy가 필요하지 않습니다.

    음, eval은 악이긴하지만, 프로그램에 a, b, c가 정의되어 있고 eval을 사용하는 것이 안전하다고 확신 할 수 있다면 sympy가 필요하지 않습니다.

    >>> a=5
    >>> b=5
    >>> c=2
    >>> exp = '(a+b)*40-(c-a)/0.5'
    >>> eval(exp)
    406.0
    
  5. ==============================

    5.

    >>> a, b, c = sympy.symbols('a b c')
    >>> exp = (a + b) * 40 - (c - a) / 0.5
    >>> exp.evalf(6, subs={a:6, b:5, c:2})
    448.000
    
  6. from https://stackoverflow.com/questions/7006626/how-to-calculate-expression-using-sympy-in-python by cc-by-sa and MIT license