>  기사  >  백엔드 개발  >  Python에서 방정식을 푸는 기술 소개(코드 예제)

Python에서 방정식을 푸는 기술 소개(코드 예제)

不言
不言앞으로
2018-11-15 13:50:585093검색

이 글은 Python에서 방정식을 푸는 기술(코드 예제)을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

numpy

numpy는 방정식을 풀기가 약간 복잡하고 행렬 사고가 필요합니다! 나는 행렬을 잘 배우지 않았고 numpy는 비선형 방정식을 풀 수 없습니다. 그래서... 나도 이것을 어떻게 해야할지 모르겠습니다!

sympy

은 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

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

z3은 제약 조건 솔버라고도 하며 문제 없이 모든 방정식을 푸는 데 사용할 수 있습니다! 하지만 윈도우는 설치가 쉽지 않아서 기본적으로 python2와 python3을 모두 지원하는 linux에서 실행합니다! 사용 아이디어는 매우 간단합니다.

  • 먼저 필요한 유형의 기호 변수를 만듭니다.

  • #🎜 🎜# 그런 다음 제약 조건 하나를 초기화합니다.

  • Add Constraints

  • 마지막으로 제약 조건에 솔루션이 있는지 확인하고 해결합니다. 변수

일반적으로 사용되는 함수는 다음과 같습니다.

z3-solver 문서

# 符号变量类型
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제