odeint in allgemeiner Form

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pumpkinpy
User
Beiträge: 10
Registriert: Freitag 26. Mai 2017, 11:45

Hallo liebe Comunity,

ich würde gerne eine mathematische Beschreibung zur Lösung von DGL's in Python realisieren. Stoße dabei aber auf einige Probleme. Auf dem Papier lässt ich mein Problem schön über vektorielle Geichungen darstellen, nur verzweifle ich bei der Übertragung in eine digitale Form. Die DGL wird quasi als Vektor aufgestellt und sieht in etwa so aus:

vektor( dq1/dt , dq2/dt, dq3/dt) = Matrix( [-1,0],[1,-1],[0,1]) * Vektor( k1 * q1, k2 * q2, k3*q3)

In Python lässt sich so was ja schön über numpy array mit dotp darstellen. Jetzt aber zu meinem Problem. Ich möchte diese Gleichung mittel odeint Lösen. Allerdings in allgemeiner Form aufstellen, sprich ich möchte die Matrix und den Vektor der Funktion übergeben, welche ich lösen möchte. Dabei stoße ich auf das Problem, dass q1 q2 q3 ja von dem Startparameter q( q[0], q[1], q[2]) abhängig sind. Wenn ich also den Vektor als Vektor( 0,1 * q[0], 0,1 * q[1], 0,1 *q[2]) übergebe weiß er ja nicht was q[0] bis q[2] ist und sagt mir ist nicht definiert. Ich verzeifle gerade stark daran wie ich das Problem lösen kann. Bin über jede hilfe dankbar.
So in die Richtung sollte das dann meiner Meinung nach aussehen, ich hoffe man kann verstehen was meine Intension ist.

Code: Alles auswählen


def con(q, t, matrix, vektor):

	bdt = cdot(matrix, vektor)
	
	#Konvertierung in richtiges Ausgabeformat, da odeint ja nicht mit 2D Matrizen zurecht kommt
        bdt = np.array(adt.T)
        cdt = tuple(bdt[0])
        
        return(cdt)

sol = sci.odeint(con, q , t, matrix, vektor )
        
Zuletzt geändert von Anonymous am Dienstag 6. Juni 2017, 11:25, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Antworten