So erstellen Sie eine Funktion direkt aus der Ausgabe von Solve

8

Wenn ich Solve[f[x,y]==0,x] auswerte, bekomme ich eine Reihe von Lösungen wie:

{{x -> something g[y]}, {x -> something else}} , usw.

Nun möchte ich jede dieser x->somethings in eine Funktion umwandeln. In der Regel sind meine Anforderungen gering, und meine Funktion f[x] ist höchstens ein Kubikwert mit einfachen Lösungen für x . Also habe ich gerade g1[y_]:=something , g2[y_]:=... etc manuell definiert.

Jedoch gibt Solve für eine Funktion, die ich jetzt habe, ein kompliziertes Polynom aus, das 4 Seiten lang ist, und es gibt 4 solche Lösungen. Ich habe versucht, mit Simplify , Collect , Factor usw. auf einfachere Formen zu reduzieren, aber es scheint einfach nicht reduzierbar.

Gibt es eine Möglichkeit, sie automatisch Funktionen zuzuordnen? (Es ist extrem schwierig, durch die Seiten zu blättern und jeden einzelnen zu kopieren ... und ich muss danach suchen, wo der nächste anfängt!)

Etwas wie: {g1[y_], g2[y_], g3[y_]} = output of Solve ?

    
Tshepang 16.03.2011, 00:44
quelle

5 Antworten

6

Es scheint, Simon hat mich auf eine Antwort geschlagen (ich bin froh, dass StackOverflow mir ein Pop-up gibt, um es mich wissen zu lassen!), deshalb werde ich einen anderen Ansatz verfolgen. Sie sollten wissen, wie Sie die Ausgabe von Solve direkt verwenden können, da es einige Male bequem ist, dies zu tun.

Beginnend mit

%Vor%

Hier sind einige Dinge, die Sie tun können.

Finden Sie die Lösungen für x für a == 7

%Vor%

Plotten Sie die Lösungen

Evaluate wird hier nicht notwendigerweise für die Basisfunktion verwendet, sondern um es der Plot-Funktion zu ermöglichen, jede Lösung einzeln zu stylen

%Vor%

Definieren Sie eine neue Funktion von a für die zweite Lösung

Beachten Sie die Verwendung von = anstelle von := hier

%Vor%

Hier ist eine Alternative zu Simons Methode zum Definieren von Funktionen für jede Lösung

%Vor%

Die Funktion wird dann mit der Syntax gg[1][17] für die erste Lösung und a == 17

verwendet %Vor%

Für diese Verwendungszwecke ist es normalerweise erforderlich, dass a (in diesem Beispiel) nicht zugewiesen ist.

    
Mr.Wizard 16.03.2011, 01:48
quelle
1

Hier ist eine einfache Lösung, die bereinigt werden konnte

%Vor%     
Simon 16.03.2011 01:34
quelle
0

Die folgende Funktion konvertiert automatisch die Ausgabe von Solve in eine Liste von Funktionen (unter der Annahme, dass Solve Lösungen findet natürlich):

%Vor%

Hier ist ein Beispiel:

%Vor%

Die Funktionen können einzeln aufgerufen werden:

%Vor%

Oder alle Funktionen können gleichzeitig aufgerufen werden, um alle Lösungen zurückzugeben:

%Vor%

Die Funktion schlägt fehl, wenn Solve keine Lösungen finden kann:

%Vor%

Variablen werden automatisch identifiziert:

%Vor%     
WReach 22.01.2012 19:58
quelle
0

Hier ist der einfachste Weg:

%Vor%     
Jon 18.04.2014 01:09
quelle
0

Das ist wirklich cool. Vielen Dank. Durch die Umwandlung von Solve-Ergebnissen in Funktionen könnte ich Manipulieren in einem Plot verwenden. Etwas wie

%Vor%

Und Sie erhalten ein Diagramm, in dem Sie den Parameter b

manipulieren können     
Hombre molecula 14.11.2014 10:05
quelle

Tags und Links