2016-11-10 1 views
1

에 승산 해결 sympy` 모듈 식 :파이썬`난 <code>sympy.solve</code>의 간단한 테스트는 아래의 코드가 식

#!/usr/bin/python 

from sympy import * 

x = Symbol('x', real=True) 
#expr = sympify('exp(1 - 10*x) - 15') 

expr = exp(1 - x) - 15 
print "Expressiong:", expr 
out = solve(expr) 
for item in out: 
    print "Answer:", item 

expr = exp(1 - 10*x) - 15 
print expr 
out = solve(expr) 
for item in out: 
    print "Answer:", item 

출력은 다음과 같다 : 방정식

Expressiong: exp(-x + 1) - 15 
Answer: -log(15) + 1 
exp(-10*x + 1) - 15 
Answer: log(15**(9/10)*exp(1/10)/15) 

exp(1 - x) = 15 제대로 해결 (x = -15log(15) + 1).

그러나 x10*x으로 변경하면 결과가 이상합니다. 내가 real=True없이 기호를 x를 초기화 할 경우

  1. 이유는 복잡한 답변이 많이있을 것입니다?

  2. x을 초기화 할 때 real=True으로 설정하더라도 여전히 대답이 올바르지 않습니다. 첫 번째 방정식과 비교하여 결과는 -3/2*log(15) + 1/10이어야합니다. 방정식을 잘못 작성 했습니까?

미리 감사드립니다.

답변

1

또한 exp(1 - 10*x) - 15 == 0에 대한 solve 출력이 불필요하게 복잡해 보일 수도 있습니다. 단 하나의 방정식에 대해 먼저 sympy.solveset을 고려할 것을 제안합니다. 이 예제에서는 다음과 같은 형식화 된 솔루션을 제공합니다.

import sympy as sp 
sp.init_printing(pretty_print=True) 

x = sp.symbols('x') 

sp.solveset(sp.exp(1 - 10*x) - 15,x) 
(콤플렉스 도메인) 지수 함수 다중 평가 대상에 의한 복소수 있다는 것을

enter image description here

참고. 솔루션의 도메인을 실제 주소로 제한하려면 solveset에 편리한 옵션 domain이 있어야합니다.

sp.solveset(sp.exp(1 - 10*x) - 15,x, domain = sp.S.Reals) 

enter image description here