이 글은 Python에서 방정식을 푸는 기술(코드 예제)을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
numpy는 방정식을 풀기가 약간 복잡하고 행렬 사고가 필요합니다! 나는 행렬을 잘 배우지 않았고 numpy는 비선형 방정식을 풀 수 없습니다. 그래서... 나도 이것을 어떻게 해야할지 모르겠습니다!
은 sage나 z3보다 열등하지만 방정식 푸는 데도 아주 능숙해요!
from sympy import * x = symbols('x') y = symbols('y') res = solve([x+y-3,x-y-1],[x,y])[0] print(res)
sage는 선형 및 비선형 방정식을 모두 풀 수 있습니다. 방정식 풀이의 세계에서는 인공물이라고 할 수 있지만 표현식은 비트 연산을 지원하지 않습니다. 예: AND 또는 NOT, 나머지 및 XOR. 비트 연산이 발생하는 방정식은 제약 조건을 생성하기 위해 z3을 사용해야만 풀 수 있습니다! 세이지의 장점도 명확합니다. 표현이 간단하고 쓰기 쉽고, 계산 속도도 빠릅니다!
온라인 세이지 솔버
var('x y') solve([x**3+y**2+666==142335262,x**2-y==269086,x+y==1834],[x,y])
z3은 제약 조건 솔버라고도 하며 문제 없이 모든 방정식을 푸는 데 사용할 수 있습니다! 하지만 윈도우는 설치가 쉽지 않아서 기본적으로 python2와 python3을 모두 지원하는 linux
에서 실행합니다! 사용 아이디어는 매우 간단합니다.
먼저 필요한 유형의 기호 변수를 만듭니다.
# 符号变量类型 Int('x') Real('x') Bool('x') BitVec('x',N) # N bit的符号变量,用于位操作 BitVecVal(num,N) # N bit的数据 num # 初始化约束器 solver = Solver() # 添加约束 solver.add(x+y==10,x-y==0) # 求解约束 solver.check() ans = solver.mode() # 初始化多个符号变量 x = [Int('x%d' % i) for i in range(n)] # 取结果中某个变量的值 value = ans[x].as_long()를 제공합니다.
위 내용은 Python에서 방정식을 푸는 기술 소개(코드 예제)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!