Simulations von Widerstandsnetzwerken

J

Johannes Bauer

Guest
Hallo,

ich würde gerne als Übung ein Programm zur Simulation von
Widerstandsnetzwerken erstellen. Also jezt keine Widerstandsnetzwerke,
die sich einfach durch R=R1+R2 bzw. R=(R1^-1+R2^-1)^-1 auflösen lassen,
sondern kompliziertere.

Zum Beispiel ein "würfelförmiges" Widerstandsnetzwerk. In der
(einfachen) Aufgabenstellung sind alle Widerstände gleich groß. Damit
hat man an den drei "Mittelknoten" selbes Potential und kann diese mit
gedachten Drähten verbinden. Dann ist die Aufgabe mittels der bekannten
Gleichungen lösbar.

Aber was, wenn ich keine gleich großen Widerstände verwende? Sagen wir,
die Widerstände sind jeweils von 1 bis 8 Ohm (wo die jetzt sind, soll
egal sein). An zwei sich gegenüberliegenden Knoten lege ich ein
Potential von 10 bzw. 0 Volt an. Wo fließt welcher Strom? An welchem
Knoten herrscht welches Potential? Um die Aufgabe weiter zu
verkomplizieren sind komplexere Figuren denkbar und drei oder vier
Anschlüsse mit definiertem Potential.

Ich hätte jetzt als Ansatz die dividierten Differenzen genommen, weil
mir die finiten Elemente etwas überdimensioniert erscheinen für das
Problem. Ist das eine gute Idee? Gibt es bessere Ansätze?

Und, ja, ich weiß, dass spice das auch kann... aber es geht mir darum,
anhand einer praktischen Aufgabe numerische Lösungsverfahren in
diskreten Systemen zu üben.

Gruß,
Johannes
 
"Johannes Bauer" <dfnsonfsduifb@gmx.de> schrieb im Newsbeitrag
news:hf7tv2x0ml.ln2@snifftop.sniffdomain...
aber es geht mir darum,
anhand einer praktischen Aufgabe numerische Lösungsverfahren in
diskreten Systemen zu üben.

Na dann programmiere alle Verfahren, damit du was lernst.
--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
 
Hallo Johannes,

Aber was, wenn ich keine gleich großen Widerstände verwende? Sagen wir,
die Widerstände sind jeweils von 1 bis 8 Ohm (wo die jetzt sind, soll
egal sein). An zwei sich gegenüberliegenden Knoten lege ich ein
Potential von 10 bzw. 0 Volt an. Wo fließt welcher Strom? An welchem
Knoten herrscht welches Potential? Um die Aufgabe weiter zu
verkomplizieren sind komplexere Figuren denkbar und drei oder vier
Anschlüsse mit definiertem Potential.
Da würde ich so rangehen:
Das Potential an allen Knoten wird zunächst als 0 angenommen, ausgenommen
die Knoten wo feste Spannungen anliegen.
Jetzt berechnest du für jeden Knoten das Potential, das sich aus den
beteiligten Widerständen und den Nachbar-Potentialen ergibt.
Dieser Prozess wird iterativ solange fortsetzt, bis sich im Rahmen der
gewünschten Genauigkeit nichts mehr ändert.

Gruss
Michael
 
Und, ja, ich weiß, dass spice das auch kann...
Für universelles Verfahren
würde man sich an das dort verwendete
Verfahren ( Gauß-Seidel ? ) halten.
Spice macht glaube ich DC- und AC-Analyse
ohnehin getrennt.

anhand einer praktischen Aufgabe numerische
Lösungsverfahren
Reine grosse Widerstandsnetzwerke sind eher
selten, man würde sie ja reduzieren, wenn sie
redundante Bauteile enthalten.
Das Problem der reinen Analyse ist
( ausser für Spice ) auch untypisch:
meist hat man prinzipiell geeignete Verschaltung
bereits gefunden würde anhand Vorgaben jetzt
gerne die konkreten Widerstände bestimmen.
Dazu kann Synthese für brute force Suche mit
Bewertung der Lösung nützlich sein.
Da man ja bei Widerständen als Bauteil auf
ca. auf E12-Reihe festgelegt ist und
der Suchraum dadurch beschränkt ist
solche Suche oft gangbar.
Es ist dann aber trotzdem so, daß man
das Programm anhand des konkreten Netzwerks
von Hand programmiert damit die Suchzeit
im Rahmen bleibt.
Bei realen Schaltungen gilt ohnehin: nur was
halbwegs simpel ist funktioniert. Alles andere
scheitert an Bauteilstreuung, zu hohen Kosten
wegen der Zahl der Bauteile, mangelnder
Fertigbarkeit weil nicht testbar usw.

MfG JRD
 
Hallo Johannes,

Johannes Bauer schrieb:
[...]
Und, ja, ich weiß, dass spice das auch kann... aber es geht mir darum,
anhand einer praktischen Aufgabe numerische Lösungsverfahren in
diskreten Systemen zu üben.
Stichwörter: Kirchhoffsche Gesetze, Knotenspannungsverfahren,
Maschenstromverfahren, Überlagerungssatz.

Gruß,
Johannes

ciao
Marcus
 
Rafael Deliano wrote:
Und, ja, ich weiß, dass spice das auch kann...

Für universelles Verfahren
würde man sich an das dort verwendete
Verfahren ( Gauß-Seidel ? ) halten.
Spice macht glaube ich DC- und AC-Analyse
ohnehin getrennt.
Ja, an Gauss-Seidel oder Jacobi-Verfahren hatte ich auch schon gedacht;
allerdings war in ein Paar Tests das Konvergenzverhalten gerade von
Gauss-Seidel extrem schlecht. Meistens divergiert das nach +-Inf oder
NaN. Ärgerlich.

anhand einer praktischen Aufgabe numerische
Lösungsverfahren

Reine grosse Widerstandsnetzwerke sind eher
selten, man würde sie ja reduzieren, wenn sie
redundante Bauteile enthalten.
[...]

Ja, das stimmt... das Problem ist natürlich eher akademischer Natur. Ich
will halt nur ein "halbwegs" praktisches Problem lösen.

Viele Grüße,
Johannes
 
MaWin wrote:
"Johannes Bauer" <dfnsonfsduifb@gmx.de> schrieb im Newsbeitrag
news:hf7tv2x0ml.ln2@snifftop.sniffdomain...

aber es geht mir darum,
anhand einer praktischen Aufgabe numerische Lösungsverfahren in
diskreten Systemen zu üben.

Na dann programmiere alle Verfahren, damit du was lernst.
Hrm... naja... es wäre schön, wenn ich halt die Verfahren weglassen
könnte, die ohnehin Müll sind. Deswegen frage ich ja nach Erfahrungswerten.

Gruß,
Johannes
 
Marcus Woletz wrote:
Hallo Johannes,

Johannes Bauer schrieb:
[...]

Und, ja, ich weiß, dass spice das auch kann... aber es geht mir darum,
anhand einer praktischen Aufgabe numerische Lösungsverfahren in
diskreten Systemen zu üben.

Stichwörter: Kirchhoffsche Gesetze, Knotenspannungsverfahren,
Maschenstromverfahren, Überlagerungssatz.
Okay, ich werd's mir mal genauer anschauen, vielen Dank. Den
Überlagerungssatz kenne ich noch nicht, mal sehen.

Gruß,
Johannes
 
Michael Koch wrote:
Hallo Johannes,


Aber was, wenn ich keine gleich großen Widerstände verwende? Sagen wir,
die Widerstände sind jeweils von 1 bis 8 Ohm (wo die jetzt sind, soll
egal sein). An zwei sich gegenüberliegenden Knoten lege ich ein
Potential von 10 bzw. 0 Volt an. Wo fließt welcher Strom? An welchem
Knoten herrscht welches Potential? Um die Aufgabe weiter zu
verkomplizieren sind komplexere Figuren denkbar und drei oder vier
Anschlüsse mit definiertem Potential.

Da würde ich so rangehen:
Das Potential an allen Knoten wird zunächst als 0 angenommen, ausgenommen
die Knoten wo feste Spannungen anliegen.
Jetzt berechnest du für jeden Knoten das Potential, das sich aus den
beteiligten Widerständen und den Nachbar-Potentialen ergibt.
Dieser Prozess wird iterativ solange fortsetzt, bis sich im Rahmen der
gewünschten Genauigkeit nichts mehr ändert.
Werde ich mal ausprobieren, mal sehen, was dabei rauskommt :)

Gruß,
Johannes
 
Rainer Ziegenbein wrote:
Michael Koch wrote:


Das Potential an allen Knoten wird zunächst als 0 angenommen,
ausgenommen die Knoten wo feste Spannungen anliegen. Jetzt
berechnest du für jeden Knoten das Potential, das sich aus den
beteiligten Widerständen und den Nachbar-Potentialen ergibt.
Dieser Prozess wird iterativ solange fortsetzt, bis sich im
Rahmen der gewünschten Genauigkeit nichts mehr ändert.

Relaxationsverfahren.

Nachteil: Konvergiert langsam.
Vorteil: Konvergiert immer.
Hmm, wieso konvergieren Relaxationsverfahren immer? Gauss-Seidel,
Jacobi, Richardson und SOR sind alles Relaxationsverfahren, aber
konvergieren nicht immer.

Gruß,
Johannes
 
Michael Koch wrote:

Das Potential an allen Knoten wird zunächst als 0 angenommen,
ausgenommen die Knoten wo feste Spannungen anliegen. Jetzt
berechnest du für jeden Knoten das Potential, das sich aus den
beteiligten Widerständen und den Nachbar-Potentialen ergibt.
Dieser Prozess wird iterativ solange fortsetzt, bis sich im
Rahmen der gewünschten Genauigkeit nichts mehr ändert.
Relaxationsverfahren.

Nachteil: Konvergiert langsam.
Vorteil: Konvergiert immer.

Bis einige dutzend Knoten funktioniert das.
Ich habe mal versucht, Aequipotenziallinien in Widerstandsschichten
damit zu berechnen. Schon bei 32x32 Stuetzstellen wartet man ewig.

Grusz,
Rainer
 
Hallo Johannes,

Johannes Bauer wrote:

MaWin wrote:

"Johannes Bauer" <dfnsonfsduifb@gmx.de> schrieb im Newsbeitrag
news:hf7tv2x0ml.ln2@snifftop.sniffdomain...


aber es geht mir darum,
anhand einer praktischen Aufgabe numerische Lösungsverfahren in
diskreten Systemen zu üben.

Na dann programmiere alle Verfahren, damit du was lernst.


Hrm... naja... es wäre schön, wenn ich halt die Verfahren weglassen
könnte, die ohnehin Müll sind. Deswegen frage ich ja nach Erfahrungswerten.
Du brauchst hier nur den Gesamtstrom für die Impedanz zu bestimmen. Ich
würde die Knotenpotentialanalyse vorschlagen, damit berechnest Du die
Knotenspannungen der n-1 Knoten gegen Bezugsknoten. Damit kannst Du die
Zweigströme anschließend sehr leicht berechnen. Im Prinzip wird es in
SPICE so gemacht.

Das Aufstellen des Gleichungssystems ist in Deinem Fall sehr leicht,
Berechnungen sind nicht erforderlich, nur das Füllen einer quadratischen
symmetrischen Matrix. Bei reziproken Netzwerken wie hier ist das ein
sehr einfaches Schema.

Das Berechnen des linearen Gleichungssystems allerdings mußt Du sicher
dem Rechner überlassen. Ich schlage Gauß-Jordan vor, hat immer
funktioniert. Es gibt unzählige Programme, auch solche welche noch bei
schlechter Konditionierung funktionieren und Dir die Konditionierung
angeben. Ich wüßte aber nicht, warum ein Widerstandsnetzwerk schlecht
konditioniert sein sollte.

Schlechte Konditionierung erkennt man daran, daß die Determinante der
Koeffizientenmatrix sehr klein wird, im Grenzfall 0. In diesem Fall ist
das Gleichungssystem nicht lösbar. Unter welchen Bedingungen das
auftreten könnte, kann ich im Moment leider nicht sagen.

Schlechte Konditionierung trat bei mir typischerweise in der
Spline-Interpolation bzw. -approximation auf, aber nicht in der
Netzwerkanalyse. Aber da kommt man schon auf Themen für de.sci.mathematik.

mfg. Winfried
 
Winfried Salomon wrote:

Hrm... naja... es wäre schön, wenn ich halt die Verfahren weglassen
könnte, die ohnehin Müll sind. Deswegen frage ich ja nach
Erfahrungswerten.

Du brauchst hier nur den Gesamtstrom für die Impedanz zu bestimmen. Ich
würde die Knotenpotentialanalyse vorschlagen, damit berechnest Du die
Knotenspannungen der n-1 Knoten gegen Bezugsknoten. Damit kannst Du die
Zweigströme anschließend sehr leicht berechnen. Im Prinzip wird es in
SPICE so gemacht.
Okay das werde ich mir auch ansehen, dankesehr!

Das Berechnen des linearen Gleichungssystems allerdings mußt Du sicher
dem Rechner überlassen. Ich schlage Gauß-Jordan vor, hat immer
funktioniert. Es gibt unzählige Programme, auch solche welche noch bei
schlechter Konditionierung funktionieren und Dir die Konditionierung
angeben. Ich wüßte aber nicht, warum ein Widerstandsnetzwerk schlecht
konditioniert sein sollte.
Gauß-Jordan kenne ich nicht; ich hätte das Lösen des LGS durch eine
QR-Zerlegung, also Pivotisierung durch Givens-Rotationen, gelöst. Da
wäre der Vorteil, dass ich das schon implementiert hätte, und es ist
auch numerisch recht stabil.

Schlechte Konditionierung erkennt man daran, daß die Determinante der
Koeffizientenmatrix sehr klein wird, im Grenzfall 0. In diesem Fall ist
das Gleichungssystem nicht lösbar. Unter welchen Bedingungen das
auftreten könnte, kann ich im Moment leider nicht sagen.

Schlechte Konditionierung trat bei mir typischerweise in der
Spline-Interpolation bzw. -approximation auf, aber nicht in der
Netzwerkanalyse. Aber da kommt man schon auf Themen für de.sci.mathematik.
Ja, bei ersten Versuchen mit hochgradigen Splines bei mir auch... da ist
die Vandermondematrix einfach nicht wirklich optimal konditioniert ;-)

Vielen Dank für deine Tipps,
Gruß,
Johannes
 
Hallo Johannes,


Johannes Bauer wrote:

Winfried Salomon wrote:





Du brauchst hier nur den Gesamtstrom für die Impedanz zu bestimmen. Ich
würde die Knotenpotentialanalyse vorschlagen, damit berechnest Du die
Knotenspannungen der n-1 Knoten gegen Bezugsknoten. Damit kannst Du die
Zweigströme anschließend sehr leicht berechnen. Im Prinzip wird es in
SPICE so gemacht.



Okay das werde ich mir auch ansehen, dankesehr!
was mir noch einfällt, die einzige Hürde bei der Knotenpotentialanalyse
ist die Umwandlung aller Spannungs- in Stromquellen, das ist nicht immer
möglich. Deshalb wird in SPICE eine modifizierte Form dieser Analyse
benutzt. Bei Dir wird dieses Problem aber sicher nicht auftreten.

Gauß-Jordan kenne ich nicht; ich hätte das Lösen des LGS durch eine
QR-Zerlegung, also Pivotisierung durch Givens-Rotationen, gelöst. Da
wäre der Vorteil, dass ich das schon implementiert hätte, und es ist
auch numerisch recht stabil.



Müßte eigentlich in der Literatur stehen. Du hast vermutlich
englischsprachige benutzt, das kenne ich wiederum nicht. Wenn Du es
selbst programmiert hast, umso besser, dann weißt Du ja worauf es
ankommt und hast was gelernt. Wo jetzt die Unterschiede der einzelnen
Verfahren sind, besonders bei den iterativen, weiß ich jetzt ohne
Nachlesen nicht.


Ja, bei ersten Versuchen mit hochgradigen Splines bei mir auch... da ist
die Vandermondematrix einfach nicht wirklich optimal konditioniert ;-)



Dazu habe ich Literatur, es gibt optimierte Verfahren je nach
Eigenschaften der Matrix, dazu müßte man tief in die lineare Algebra
einsteigen, um das genau zu verstehen.

mfg. Winfried
 

Welcome to EDABoard.com

Sponsor

Back
Top