2016-11-30 1 views
0

Ich arbeite an einem Projekt für Elektrotechnik, bei dem wir die Spannung über einen Kondensator in einer RLC-Schaltung als Funktion der Zeit auftragen. Ich stütze meinen Code auf das folgende Tutorial: Python-ODE for RLC Circuit. Mein Code ist voll funktionsfähig, aber ich möchte nur besser verstehen, wie die benutzerdefinierte Funktion und die SciPy-Integrationsfunktion funktioniert. Ich habe die Dokumentation gelesen, aber ich habe noch einige spezifische Fragen. Hier ist mein Code:Wie funktioniert diese benutzerdefinierte Funktion mit scipy integrate Odeint?

from scipy.integrate import odeint # for integrating ode 
import matplotlib.pyplot as plt # for plotting commands 
import numpy as np #For loadtxt and linspace modules 

R,L,C,tl,numplot = np.loadtxt('UserInput_RLC_Values.txt',unpack=True) 

def RLC(A,t): 
    Vc,m=A 
    V = 2.0 #voltageSource 
    res=[m,(V-Vc-(m*R*C))/(L*C)] 
    return res 

time = np.linspace(0.0,tl,numplot) 
vc,m = odeint(RLC,[0.0,0.0],time).T 

Hier sind meine Fragen:

  1. Welche Rolle werden die Parameterwerte A und t spielen in der Funktion RLC? Warum wird A sowohl Vc (Kondensatorspannung) als auch m (Dummy-Variable für v ') zugewiesen? Wird es überhaupt benutzt?
  2. Wenn ich RLC-Funktion im Odeint Modul aufrufen, warum gibt es keine Parameter?
  3. Was bedeutet die .T am Ende des Odeint-Moduls? Ich kann nichts darüber in der Dokumentation finden.

Vielen Dank für einen Einblick darauf. Ich hoffe, dass dies keine faule Frage ist, aber ich denke, dass es mir sehr helfen wird, dies zu verstehen.

Antwort

0

Die ODE-Funktion odeint geben muss das Format haben f(state, time) wo time ist die unabhängige Variable und state der Zustandsvektor. Der entsprechende (Vektor-wertige) Differentialgleichung y'(t)=f(y(t),t)

  1. ) Für den Standard-ODE-Solver Sie Gleichungen höherer Ordnung in Systeme erster Ordnung umwandeln müssen. Hier m als Impuls (?) Variable, m = dVc/dt. Dann ist dm/dt = d²Vc/dt² die zweite Ableitung.

    Wenn der Eingang state = [ Vc, m ]10 ist, muss die Ausgabe [ dVc/dt, dm/dt ] = [ m, Eqn(t,Vc,m) ] sein, wobei d²Vc/dt² = Eqn(t,Vc,dVc/dt) eine Form der ursprünglichen Gleichung ist.

    t muss nur in der Argumentliste vorhanden sein, auch wenn die ODE zeitinvariant ist.

  2. ) Sie passieren die Funktion als Referenz/Adresse, kein Funktionswert

  3. ) Es bedeutet „transponieren“. Das Ergebnis von odeint ist eine Liste von Zustandsvektoren, die Paare von Zahlen sind. Wenn Sie es transponieren, wird es in ein Paar Listen umgewandelt, die einem Variablenpaar zugewiesen werden können.

Verwandte Themen