[PYTHON] python에서 sympy를 사용하여 표현식을 계산하는 방법
PYTHONpython에서 sympy를 사용하여 표현식을 계산하는 방법
Python에서 sympy를 사용하여 아래의 식을 계산해야합니까?
exp = '(a+b)*40-(c-a)/0.5'
a = 6, b = 5, c = 2이 경우 Python에서 sympy를 사용하여 표현식을 계산하는 방법은? 도와주세요.
해결법
-
==============================
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.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.위의 내용에 대해서는 이미 알고 있었지만 알 수없는 기호가있는 문자열 식을 사용하고 이러한 기호에 대한 액세스가 필요한 경우 여기에 사용한 코드가 있습니다.
위의 내용에 대해서는 이미 알고 있었지만 알 수없는 기호가있는 문자열 식을 사용하고 이러한 기호에 대한 액세스가 필요한 경우 여기에 사용한 코드가 있습니다.
# 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.음, 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.
>>> 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
from https://stackoverflow.com/questions/7006626/how-to-calculate-expression-using-sympy-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 : 로컬 타임 존을 찾아냅니다. (0) | 2018.11.07 |
---|---|
[PYTHON] 범위가 너무 큽니다. Python (0) | 2018.11.07 |
[PYTHON] SQLAlchemy : 날짜 필드를 필터링하는 방법? (0) | 2018.11.07 |
[PYTHON] 숫자에 합쳐지는 모든 숫자 얻기 (0) | 2018.11.07 |
[PYTHON] 결말이없는 파이프에서 어떻게 파이썬으로 stdin을 읽는가? (0) | 2018.11.07 |