|
3.4.4 Simultane Gleichungen
Sie können Solve eine Liste simultaner Gleichungen, die dann ein Gleichungssystem bilden, zur Lösung übergeben. Mit Solve lassen sich explizite Lösungen für eine große Klasse simultaner Polynom-Gleichungen finden.
Hier sind zwei einfache lineare Gleichungen mit zwei Unbekannten.
In[1]:= Solve[ { a x + b y == 1, x - y == 2 } , {x, y} ]
Out[1]= 
Hier ist ein komplizierteres Beispiel. Das Ergebnis ist eine Liste von Lösungen, wobei jede Lösung aus einer Liste von Transformationsregeln für die Variablen besteht.
In[2]:= Solve[{x^2 + y^2 == 1, x + y == a}, {x, y}]
Out[2]= 
Mit dem /.-Operator läßt sich die Liste der Lösungen benutzen.
In[3]:= x^3 + y^4 /. % /. a -> 0.7
Out[3]= 
Selbst wenn Solve keine expliziten Lösungen finden kann, ist es oft in der Lage, Gleichungssysteme zu „entwirren", um ein symbolisches Ergebnis mit Root-Objekten zu erzeugen.
In[4]:= First[ Solve[{x^2 + y^3 == x y, x + y + x y == 1}, {x, y}]]
Out[4]= 
Dann können Sie mit N ein numerisches Ergebnis erhalten.
In[5]:= N[ % ]
Out[5]= 
Die Variablen in Solve brauchen keine einzelnen Symbole zu sein. Wenn Sie große Gleichungssysteme aufstellen, werden Sie häufig Ausdrücke wie a[i] als Variablen benutzen wollen.
Hier ist eine Liste von drei Gleichungen für die a[i].
In[6]:= Table[ 2 a[i] + a[i-1] == a[i+1], {i, 3} ]
Out[6]= 
Dies sind die Lösungen für einige der a[i].
In[7]:= Solve[ % , {a[1], a[2], a[3]} ]
Out[7]= 
Lösen von Gleichungssystemen
Wenn Sie keine Objekte explizit spezifizieren, für die die Gleichung gelöst werden soll, wird Solve versuchen, die Gleichung für alle Variablen zu lösen.
In[8]:= Solve[ { x + y == 1, x - 3 y == 2 } ]
Out[8]= 
Möglichkeiten der Eingabe von Gleichungssystemen in Solve
Wenn Sie ein Gleichungssystem aus Matrizen konstruieren, erhalten Sie in der Regel Gleichungen zwischen Listen von Ausdrücken.
In[9]:= {{3,1},{2,-5}}.{x,y}=={7,8}
Out[9]= 
Solve konvertiert Gleichungen, die Listen enthalten, in Listen mit Gleichungen.
In[10]:= Solve[%, {x, y}]
Out[10]= 
Mit LogicalExpand können Sie die Umwandlung explizit ausführen.
In[11]:= LogicalExpand[%%]
Out[11]= 
|