Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in Techniken zum Lösen von Gleichungen in Python (Codebeispiele)

Einführung in Techniken zum Lösen von Gleichungen in Python (Codebeispiele)

不言
不言nach vorne
2018-11-15 13:50:585117Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die Techniken zum Lösen von Gleichungen in Python (Codebeispiele). Ich hoffe, er wird Ihnen als Referenz dienen.

Numpy

Numpy ist etwas kompliziert, um Gleichungen zu lösen, und Sie müssen Matrixdenken verwenden! Ich habe Matrizen nicht gut gelernt und Numpy kann keine nichtlinearen Gleichungen lösen, also ... ich weiß auch nicht, wie ich das machen soll!

sympy

ist Sage und Z3 unterlegen, kann aber auch Gleichungen sehr gut lösen!

from sympy import *
x = symbols('x')
y = symbols('y')
res = solve([x+y-3,x-y-1],[x,y])[0]
print(res)

sage

sage kann sowohl lineare als auch nichtlineare Gleichungen lösen. Es kann als Artefakt in der Welt der Gleichungslösung bezeichnet werden, aber der Ausdruck unterstützt keine Bitoperationen wie: und oder Nicht, Rest und XOR. Gleichungen, in denen Bitoperationen auftreten, können nur mit z3 gelöst werden, um Einschränkungen zu schaffen! Die Vorteile von Sage liegen ebenfalls auf der Hand: Ausdrücke sind einfach und leicht zu schreiben und die Berechnungsgeschwindigkeit ist hoch!
Online-Sage-Löser

var('x y')
solve([x**3+y**2+666==142335262,x**2-y==269086,x+y==1834],[x,y])

z3

z3 wird auch als Constraint-Löser bezeichnet und kann zum problemlosen Lösen jeder Gleichung verwendet werden! Da Windows jedoch nicht einfach zu installieren ist, führe ich es grundsätzlich unter linux aus, das sowohl Python2 als auch Python3 unterstützt! Die Idee ist ganz einfach:

  • Erstellen Sie zuerst die symbolische Variable des Typs, den Sie benötigen

  • und initialisieren Sie dann eine Einschränkung,

  • Einschränkungen hinzufügen

  • Bestimmen Sie abschließend, ob die Einschränkungen Lösungen haben, und lösen Sie sie nach Variablen auf

Die häufig verwendeten Funktionen sind unten aufgeführt. z3-Solver-Dokument

# 符号变量类型
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()

Das obige ist der detaillierte Inhalt vonEinführung in Techniken zum Lösen von Gleichungen in Python (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen