Ich habe ein sympy Ergebnis, das so windet sich:Wie man sympy forciert, um spezifische Teilausdrücke zu extrahieren?
from sympy import *
Vin,Vc,C1,Cs,R1,Rs,t=symbols(r'V_{in},V_{C},C_1,C_S,R_1,R_S,t')
k1=Symbol('k_1')
eqVc=Eq(Vc(t),(Rs*(exp(t*(R1+Rs)/(R1*Rs*(C1+Cs))) - 1)*Heaviside(t) +
k1*(R1+Rs))*exp(-t*(R1+Rs)/(R1*Rs*(C1+Cs)))/(R1+Rs))
Der Ausdruck eqVc
kommt wie folgt aus:
Ich weiß, dass diese Funktion der Form sein:
Mein Ziel ist es, die Werte von V zu bekommen Cinit, VcFinal und Tau, aber besonders Tau.
Gibt es eine Möglichkeit, Sympy dazu zu bringen, diese Werte zu extrahieren? cse() tut nicht ganz, was ich will-- Ich kann es bekommen, um C1 + Cs zu ersetzen, zum Beispiel mit cse ([C1 + Cs, eqVc]), und es erkennt, dass der Exponent zu e eine gemeinsame ist Teilausdruck, aber es neigt dazu, das t in den Teilausdruck aufzunehmen.
anderen Weg als ich erwartet hatte, aber es wird die Arbeit erledigt! Es lohnt sich, darauf hinzuweisen, dass die Zeiten, in denen wir Gleichheit setzen, relativ willkürlich sind, außer dass es mindestens 3 von ihnen geben muss (um die 3 Unbekannten zu lösen) und aus irgendeinem Grund muss t = 0 enthalten sein. Aus irgendeinem Grund funktioniert das Lösen bei [1,2,3] nicht (oder dauert länger als ich warten möchte). – Omegaman
Ich denke, mindestens ein Mal muss auf der Nullseite der Heaviside für die anfängliche Spannung berechnet werden. – chthonicdaemon