Maison > Article > développement back-end > Introduction aux techniques de résolution d'équations en Python (exemples de code)
Cet article vous apporte une introduction aux techniques de résolution d'équations en Python (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
numpy est un peu compliqué à résoudre des équations, et vous devez utiliser la pensée matricielle ! Je n'ai pas bien appris les matrices et numpy ne peut pas résoudre les équations non linéaires, donc... je ne sais pas non plus comment faire ça !
est inférieur à sage et z3, mais il est aussi très bon pour résoudre des équations !
from sympy import * x = symbols('x') y = symbols('y') res = solve([x+y-3,x-y-1],[x,y])[0] print(res)
sage peut résoudre des équations linéaires et non linéaires. Cela peut être appelé un artefact dans le monde de la résolution d'équations. Cependant, les expressions ne prennent pas en charge les opérations sur les bits, telles que : ET ou NON, reste et XOR. Les équations dans lesquelles des opérations sur les bits se produisent ne peuvent être résolues qu'en utilisant z3 pour créer des contraintes ! Les avantages de sage sont également évidents : les expressions sont simples et faciles à écrire, et la vitesse de calcul est rapide !
Sage Solver en ligne
var('x y') solve([x**3+y**2+666==142335262,x**2-y==269086,x+y==1834],[x,y])
z3 est également appelé solveur de contraintes et peut être utilisé pour résoudre n'importe quelle équation sans aucun problème ! Mais Windows n'est pas facile à installer, donc je l'exécute essentiellement sur linux
, qui prend en charge à la fois python2 et python3 ! L'idée est très simple :
Créez d'abord la variable symbolique du type dont vous avez besoin
puis initialisez une contrainte,
Ajouter des contraintes
Enfin, déterminer si les contraintes ont des solutions et résoudre les variables
Les fonctions couramment utilisées sont répertorié ci-dessous document 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()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!