Forum: Analoge Elektronik und Schaltungstechnik MNA Knotenpotentialverfahren mit wxMaxima


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Point.ofno.return (Gast)


Angehängte Dateien:

Lesenswert?

Um mein Wissen mal wieder aufzufrischen, habe ich mir überlegt mit einem 
OpenSource CAS Tool ein paar Standard Aufgaben zu lösen.

Ich möchte das gezeigte Beispiel 3.6.2 mit wxMaxima lösen. Es soll 
mittels der Modifizierten Knotenspannungsverfahrens algebraisch gelöst 
werden. Mein Ziel ist es am Ende eine Gleichung für U3 zu bekommen als 
Funktion der Widerstände und der beiden Spannungsquellen z.B.: 
U3(G1,G2,U1,U2)=....

Meine Schritte waren bisher folgende:

1.Erstellen der Leitwert-Matrix:
A:matrix([G1,0,-G1],[0,G2,-G2],[-G1,-G2,G1+G2+G3]);

2.Stromquellen-Vektor:
b:matrix([0,0,0]);

3.Inverse A multiplizieren mit Vektor b um den unbekannten 
Spannungs-Vektor [Uq1,Uq2,Ukn3] zu erhalten:
x:invert(A).b;

Leider wird das Ergebnis noch falsch angegeben: x=[0,0,0]

Wer kann das mit wxMaxima lösen?

: Verschoben durch Moderator
von LostInMusic (Gast)


Lesenswert?

>Leider wird das Ergebnis noch falsch angegeben: x=[0,0,0]

"Falsches Ergebnis" ist gut. Was soll denn sonst herauskommen, wenn Du 
eine Matrix mit b = [0,0,0] multipliziert?

von LostInMusic (Gast)


Lesenswert?

>unbekannten Spannungs-Vektor [Uq1,Uq2,Ukn3]

Uq1 und Uq2 sind unbekannt?

von Peter D. (peda)


Lesenswert?

Ich benutze für solche Aufgaben gerne die Superposition.
Also einfach U1 bzw. U2 zu 0 setzen, die Spannung an R3 ausrechnen und 
dann beide Werte addieren.
Mit Leitwerten habe ich mich schon immer schwer getan.

von LostInMusic (Gast)


Lesenswert?

Einzeiler-Lösung mit Maxima (eine Knoten- und zwei Maschengleichungen):
1
linsolve([u1/R1 + u2/R2 - u3/R3 = 0, Uq1 = u1 + u3, Uq2 = u2 + u3], [u1, u2, u3])

mit uk = Rk·Ik (k = 1, 2, 3)

Ergebnis: u3 = (R1·Uq2 + R2·Uq1)/(R1 + R2 + R1·R2/R3)

Wenn R3 fehlt (R3 = unendlich), ist u3 der gewichtete arithmetische 
Mittelwert der Spannungen Uq1 und Uq2 mit den Widerständen R1 und R2 als 
Gewichten. Dabei sind die Gewichte aber witzigerweise *vertauscht*: R1 
ist das zu Uq2 gehörende Gewicht und R2 das zu Uq1 gehörende.

Falls es irgendjemanden interessiert.

von LostInMusic (Gast)


Lesenswert?

Auch das wäre eine coole Lösung mit Maxima:
1
/* x = [I1, I2, I3, phi0, phi1, phi2, phi3] */
2
3
A: matrix([+1, +1, -1,  0,  0,  0,  0],
4
          [ 0,  0,  0, -1, +1,  0,  0],
5
          [ 0,  0,  0, -1,  0, +1,  0],
6
          [R1,  0,  0,  0, -1,  0, +1],
7
          [ 0, R2,  0,  0,  0, -1, +1],
8
          [ 0,  0, R3, +1,  0,  0, -1],
9
          [ 0,  0,  0, +1,  0,  0,  0]);
10
11
b: [0, Uq1, Uq2, 0, 0, 0, 0];
12
13
x: invert(A).b;
14
ratsimp(x);

Kannst Du ja ausprobieren. Mit dieser Variante bekommst Du die 
vollständige Information über das Netzwerk, nämlich alle Ströme I1, I2, 
... und alle Potentiale phi0, phi1, ... (siehe Definition von x in der 
Kommentarzeile). Welche Gleichungen im System A.x = b codiert sind und 
warum sie gelten, darfst Du selbst herausfinden.

von LostInMusic (Gast)


Lesenswert?

Wobei die "+1" in der untersten A-Matrixzeile [0, 0, 0, +1, 0, 0, 0] 
nicht nur auf dieser Position, also A_74, stehen darf, sondern auch auf 
A_75, A_76 oder A_77. Man darf sogar vier beliebige reelle Zahlen auf 
diese Positionen setzen, um das Potential zu eichen.

@Point.ofno.return: Wie wär's mit einem Feedback, ob die Antworten 
hilfreich für Dich waren?

von Point.of.no.return (Gast)


Angehängte Dateien:

Lesenswert?

1
"Falsches Ergebnis" ist gut. Was soll denn sonst herauskommen, wenn Du 
2
eine Matrix mit b = [0,0,0] multipliziert?

Da hatte ich wohl ein Brett vorm Kopf. Mein urprünglicher Beitrag 
enthielt noch garnicht die Matrize für das MNA. So ist es vollständig:
1
A:matrix([G1,0,-G1,1,0],
2
         [0,G2,-G2,0,1],
3
         [-G1,-G2,G1+G2+G3,0,0],
4
         [1,0,0,0,0], 
5
         [0,1,0,0,0]);
6
7
b:matrix([0,0,0,Uq1,Uq2]);
8
9
x:invert(A).b;
10
ratsimp(x);
11
Nach der Berechnung enthält x dann folgendes Ergebnis:
12
13
(U1, U2, U3, Iq1, Iq2)

Um die algebraische Lösung zu verifizieren, habe ich den Bauteilen Werte 
zugewiesen und das Ergebnis mit der Spice Berechnung verglichen. Es 
passt (siehe Foto).

Per Definition fließen die Ströme allerdings vom Minus zum Pluspol der 
Spannungsquellen. Also entgegen der sonst üblichen Stromrichtung.
1
Ich benutze für solche Aufgaben gerne die Superposition.
2
Also einfach U1 bzw. U2 zu 0 setzen, die Spannung an R3 ausrechnen und 
3
dann beide Werte addieren.

Das ist die "herkömmliche" Methode. Bei großen Netzwerken gelangt man 
schnell an die Grenze des machbaren. Deshalb trainiere ich die 
MNA-Methode um auch beliebig große Beschaltungen in kurzer Zeit 
algebraisch lösen zu können.
1
@Point.ofno.return: Wie wär's mit einem Feedback, ob die Antworten 
2
hilfreich für Dich waren?

Wenn ich ehrlich bin, verstehe ich deine Art die Matrize aufzustellen 
nicht ganz.

von LostInMusic (Gast)


Lesenswert?

>verstehe ich deine Art die Matrize aufzustellen nicht ganz.

Was ich gemacht habe, hat mit der MNA nichts zu tun. Meine Idee war, 
folgende Gleichungen aufzustellen:

- Die Gleichung, die beschreibt, was der Knoten "3" physikalisch bewirkt
- ..., was die Spannungsquelle 1 physikalisch bewirkt
- ..., was die Spannungsquelle 2 physikalisch bewirkt
- ..., was der Widerstand R1 physikalisch bewirkt
- ..., was der Widerstand R2 physikalisch bewirkt
- ..., was der Widerstand R3 physikalisch bewirkt

Außerdem entschied ich mich noch für die Hinzunahme einer weiteren 
Gleichung, die das Potential des Knotens "0" auf Null festlegt. Dann hat 
das System 7 Gleichungen für 7 Unbekannte, nämlich die Ströme in den 
drei Zweigen und die Potentiale der vier Knoten.

Nach dem Aufstellen der Gleichungen habe ich das System in der Form 
"Matrix A mal Vektor x gleich Vektor b" dargestellt und die Größen A und 
b in Maxima eingegeben.

>Matrize

Das Wort gibt es zwar, aber das, worüber wir hier sprechen, heißt 
Matrix (Mehrzahl: Matrizen).

von Michel M. (elec-deniel)


Lesenswert?


von Point.of.no.return (Gast)


Lesenswert?

1
Was ich gemacht habe, hat mit der MNA nichts zu tun. Meine Idee war, 
2
folgende Gleichungen aufzustellen:

Danke für die Mithilfe, ich möchte es aber ausschließlich mit der MNA 
lösen. In der Praxis hätte ich das mit dem Überlagerungssatz gelöst, um 
schnell zur Lösung zu gelangen. Ich möchte aber das MNA-Prinzip 
beherrschen, da es sich gut auf sehr große Schaltungen skalieren lässt.

Ich habe also als Lösung der Musteraufgabe folgende Gleichung für die 
Spannung U3=f(Uq1,Uq2,...):
1
 U3=(G2*Uq2+G1*Uq1)/(G3+G2+G1)

Ich kann mir die Gleichung jetzt nach Belieben umstellen lassen, hier 
z.B.: nach Uq1:
1
solve([U3=(G2*Uq2+G1*Uq1)/(G3+G2+G1)],[Uq1]);
2
3
Ergibt: Uq1=-(G2*Uq2+(-G3-G2-G1)*U3)/G1

Jetzt möchte ich allerdings die Gleichung im Verhältnis U3/Uq1 
umgestellt haben. Dies benötigt man häufig zum Darstellen der 
Übertragungsfunktion einer großen Schaltung. Leider funktioniert 
folgendes nicht:
1
solve([U3=(G2*Uq2+G1*Uq1)/(G3+G2+G1)],[U3/Uq1]);

Welcher Befehl ist dafür nötig?

von LostInMusic (Gast)


Lesenswert?

>Jetzt möchte ich allerdings die Gleichung im Verhältnis U3/Uq1
>umgestellt haben.

Mir ist nicht klar, was genau Du damit meinst.

Wenn Du wissen willst, wie groß U3/Uq1 ist, dann reicht es doch, die 
rechte Seite der U3-Gleichung durch Uq1 zu dividieren:

U3/Uq1 = (G2*Uq2/Uq1 + G1)/(G3 + G2 + G1)

Das geht natürlich auch in Maxima:
1
U3: (G2*Uq2 + G1*Uq1)/(G3 + G2 + G1);
2
U3/Uq1;

Wie Du feststellen wirst, erscheint dann leider nur ein Uq1 im Nenner, 
d. h. es wird nicht in der Zählersumme verrechnet.

von Point.of.no.return (Gast)


Lesenswert?

1
 U3/Uq1 = (G2*Uq2+G1*Uq1)/((G3+G2+G1)*Uq1)

Ja, da fehlt leider noch ein Rechenschritt. Maxima hat nur Uq1 in den 
Zähler geschrieben. Es müsste aber komplett umgestellt werden.

von Point.of.no.return (Gast)


Lesenswert?

"Maxima hat nur Uq1 in den Nenner geschrieben" sollte es heißen...

von LostInMusic (Gast)


Lesenswert?

>Ja, da fehlt leider noch ein Rechenschritt.

Maxima führt den nicht aus, weil er eine Darstellung erzeugt, die man 
als komplizierter ansehen kann, weil darin zwei Bruchstriche 
vorkommen.

Wenn es Dir aber um die "entdimensionalisierte" Funktion f(alpha) mit f 
= U3/Uq1 und alpha = Uq2/Uq1 geht, dann gibt es eine einfache Lösung: Du 
setzt  Uq2 = alpha·Uq1 und dann liefert Dir auch Maxima über "ratsimp" 
das ordentliche Ergebnis (G2*alpha + G1)/(G3 + G2 + G1).

von Point.of.no.return (Gast)


Lesenswert?

Alpha enthält ja dann auch noch Uq1. Ich möchte aber, dass rechts nur 
Uq2 und die Widerstände stehen: "U3/Uq1 = .... * Uq2"

von LostInMusic (Gast)


Lesenswert?

>Ich möchte aber, dass rechts nur Uq2 und die Widerstände stehen: "U3/Uq1 = .... * 
Uq2"

Ähhh...?!?! Du erhoffst Dir von der Division der rechten Seite durch 
Uq1, dass das Ergebnis unabhängig von Uq1 wird? Das ist ein Scherz, 
oder?

von Point.of.no.return (Gast)


Angehängte Dateien:

Lesenswert?

1
Du erhoffst Dir von der Division der rechten Seite durch 
2
Uq1, dass das Ergebnis unabhängig von Uq1 wird?

Das ist natürlich nicht möglich. U3 hängt linear von U1 und U2 ab. Hier 
habe ich mich von der SLiCAP Ausgabe in die Irre führen lassen (siehe 
Screenshot). Für die Darstellung von U3/Uq1 wird die in SLiCAP die Uq2 
durch einen Kurzschluss ersetzt.

von LostInMusic (Gast)


Lesenswert?

>Für die Darstellung von U3/Uq1 wird die in SLiCAP die Uq2
>durch einen Kurzschluss ersetzt.

OK, für Uq2 = 0 ist U3/Uq1 tatsächlich (und trivialerweise) unabhängig 
von Uq1. Äquivalente Aussage: U3 ist proportional zu Uq1 mit einem nur 
von den Widerständen abhängigen Proportionalitätsfaktor.

"Trivialerweise" weil: Nimm eine Spannungsquelle U und ein Netzwerk aus 
258 kreuz und quer miteinander verschalteten Widerständen. Zwischen 
irgendwelche zwei Knoten in dem Netzwerk hängst Du ein Voltmeter. Es 
misst die Spannung u. Dann ist u natürlich proportional zu U, weil eine 
Verdoppelung/Verdreifachung von U alle Ströme in dem Netzwerk 
verdoppelt/verdreifacht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.