2016-09-28 8 views
2

현재 방정식 시스템을 풀고 있습니다. 방정식의등식 방정식의 이름 지정 Python

부분 집합은 다음과 같습니다

eq1 = pi1 * q[0+1] == pi0 * r[0+1] 
eq2 = pi2 * q[0+1] == pi0 * r[1+1] + pi1 * r[1+1] 
eq3 = pi3 * q[0+1] == pi0 * r[2+1] + pi1 * r[2+1] + pi2 * r[1+1] 
eq4 = pi4 * q[0+1] == pi0 * r[3+1] + pi1 * r[3+1] + pi2 * r[2+1] + pi3 * r[1+1] 
eq5 = pi5 * q[0+1] == pi0 * r[4+1] + pi1 * r[4+1] + pi2 * r[3+1] + pi3 * r[2+1] + pi4 * r[1+1] 
eq6 = pi6 * q[0+1] == pi0 * r[5+1] + pi1 * r[5+1] + pi2 * r[4+1] + pi3 * r[3+1] + pi4 * r[2+1] + pi5 * r[1+1] 
eq7 = pi7 * q[0+1] == pi0 * r[6+1] + pi1 * r[6+1] + pi2 * r[5+1] + pi3 * r[4+1] + pi4 * r[3+1] + pi5 * r[2+1] + pi6 * r[1+1] 

불행하게도,이 나는 그것이 작동하는 원하는 방식으로 작동하지 않습니다. 나는 다음과 같이 그것을 읽기를 원한다 : 첫번째 방정식은 'eq1'이라는 이름을 가지며 일정한 등식을 갖는다. 다른 줄도 비슷하게 읽어야합니다. 제 코드에는 14 개 이상의 방정식이 있습니다. "solve ([], [])"에서 실제로 긴 표현식을 피하기 위해 이름을 지정하고 싶습니다.

이것이 가능합니까? 그렇다면 어떻게해야합니까?

답변

0

방정식을 방정식의 두면을 나타내는 두 개의 항목을 포함하는 튜플에 매핑하면 식 (1, 2 등)의 인덱스를 사전에 매핑 할 수 있습니다.

equations = dict() 
equations[1] = (pi1 * q[0+1], pi0 * r[0+1]) 

그런 다음 solve(equations[1])를 호출하고 solve() fuction를이 같은 일을 할 수 있습니다

def solve(equation): 
    left_side_of_equation = equation[0] 
    right_side_of_equation = equation[1] 
    # Here do everything you need with this equation values. 

을 또는 다음과 같이 함수를 호출 : solve(equations[1][0], equations[1][1])을하고 solve() 함수에 두 개의 매개 변수가 있습니다. 당신은 당신은뿐만 아니라 튜플에서이 정보를 저장해야합니다 단지 == (더 큰 동등한 등) 방정식보다 더 갖고 싶어

:

편집 주석 응답합니다.

equations[42] = (pi1, 0, "ge") 

과 같은 solve() 기능 구현 : 그것은 다음과 같을 수 있습니다

def solve(equation): 
    left_side_of_equation = equation[0] 
    right_side_of_equation = equation[1] 
    operator = equation[2] 
    if operator == "ge": # Greater or equal 
     # Do your comparison 
    elif operator == "g": # Greater 
     # Do your comparison 
    # Add all remaining possibilities. 
+0

감사합니다 많이! 방정식 주위에 괄호()가 필요합니까? –

+0

그리고 ineq0 = pi0> = 0 및 ineq1 = pi1> = 0과 같은 부등식으로 어떻게 해결할 수 있습니까? –

+0

아니, 그들은 필요하지 않습니다 - 그것은 단지 나에게 더 읽기 쉽게 보입니다. – grael