Numerisches Problem als kleines Pythonskript realisierbar?

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
Aramil
User
Beiträge: 3
Registriert: Sonntag 13. November 2011, 19:12

Hallo und guten Abend,

ich habe heute versucht, ein kleines Skript für ein numerisches Problem zu erstellen.
Ich wollte die Temperatur einer Ofenecke berechnen lassen. Dieses Problem wurde uns in der Vorlesung, per Hand, mit dem Relaxationsverfahren erklärt, bzw. vorgerechnet. Ich wollte dieses in Python übertragen, bin dabei leider auf ein Problem gestoßen, welches ich erst klären wollte, bevor ich weiter mache.

Das Beispiel umfasste 5 Knoten(a-e), über die im Zusammenspiel mit den umliegenden Temperaturknoten neue Temperaturen ermittelt wurden. Ich wollte diese Temperaturen, die der ausgewählten Knoten und die der umliegenden, in eine Liste speichern: a=[T1,T2,...].
Dadurch würde ich für alle gegebenen Knoten Listen erhalten. Jedoch müssten die Listen auch untereinander verknüpft sein, da die Knoten nebeneinander liegen und somit die Änderung eines Knotens, sich in der Liste des Nachbarknoten widerspiegelt(Änderung eines T-Wertes in a führt zu Änderung eines T-Wertes in b). Kann man geänderte Werte in Listen direkt ansprechen oder müsste ich die änderbaren Werte immer an die selbe Stelle schreiben, um sie ändern zu können? Ist das direkte Ansprechen mit Grundlegenden Python-Kenntnissen realisierbar? Wie würde ein Befehl dafür aussehen?

Ich hoffe mein Problem ist einigermaßen verständlich. Wenn etwas unklar ist bitte nachfragen :)
Danke!

Mit freundlichen Grüßen

Christian

P.S. Ich habe mal die Zeichnung der Ofenecke angehangen.

Bild
BlackJack

@Aramil: Die Frage aus dem Betreff kann man wohl ohne Einschränkungen mit Ja beantworten. Wenn man das mit Papier und Bleistift in einer kleinen Tabelle ausrechnen kann, dann spricht nichts dagegen, dass es auch in einer Programmiersprache auf dem Rechner geht. Und da geht dann jede auch nur annähernd brauchbare Programmiersprache. Das dürfte sogar das BASIC auf einem C64 einschliessen. ;-)

Die Frage im Text erschliesst sich mir nicht so recht. Wenn die Knoten zweidimensional angeordnet sind, würde sich vielleicht auch eine verschachtelte Liste anbieten, welche die 2D-Struktur widerspiegelt. Oder auch ein Objektgraph bei dem jeder Knoten als eigenes Objekt repräsentiert wird, welches seine Nachbarn kennt.

Andererseits gibt es bei `numpy` vielleicht sogar etwas fertiges.
Aramil
User
Beiträge: 3
Registriert: Sonntag 13. November 2011, 19:12

BlackJack hat geschrieben:@Aramil: Die Frage aus dem Betreff kann man wohl ohne Einschränkungen mit Ja beantworten. Wenn man das mit Papier und Bleistift in einer kleinen Tabelle ausrechnen kann, dann spricht nichts dagegen, dass es auch in einer Programmiersprache auf dem Rechner geht. Und da geht dann jede auch nur annähernd brauchbare Programmiersprache. Das dürfte sogar das BASIC auf einem C64 einschliessen. ;-)
Stimmt ;) Da wollte ich dem ganzen nur eine gute Überschrift geben :)

BlackJack hat geschrieben:Die Frage im Text erschliesst sich mir nicht so recht. Wenn die Knoten zweidimensional angeordnet sind, würde sich vielleicht auch eine verschachtelte Liste anbieten, welche die 2D-Struktur widerspiegelt. Oder auch ein Objektgraph bei dem jeder Knoten als eigenes Objekt repräsentiert wird, welches seine Nachbarn kennt.

Andererseits gibt es bei `numpy` vielleicht sogar etwas fertiges.
Meine Idee mit den Listen war ein erster Versuch. Ich wollte zuerst versuchen, das Problem mit dem wenigen Grundkenntnissen, die ich besitze, zu lösen.

Hast du einen Tip, wo ich mich genauer über die verschachtelten Listen und die Objektgraphen belesen kann? Beziehungsweise, kannst du mir kurz erklären, wie die beiden Sachen funktionieren?

Danke!

mfg

Christian
BlackJack

@Aramil: Verschachtelte Listen sind — naja eben Listen verschachtelt. Also Listen die in Listen stecken. Wenn man eine 2D-Struktur hat, kann man die so recht einfach abbilden. Bei den Objekten hätte man ein Objekt pro Knoten und der kennt seine Nachbarn. Zum Beispiel weil die in einer Liste vermerkt werden. Das ist beides eigentlich nichts wo man spezielle Literatur für braucht. Eine Einführung die Liste beziehungsweise Klassen abdeckt sollte da ausreichen. Also zum Beispiel das Tutorial in der Python-Dokumentation.

Da es sich nach dem Foto zu urteilen nicht um ein Rechteck handelt, würde ich wohl die Knoten als eigene Objekte modellieren und keine verschachtelte Liste dafür verwenden.
problembär

Aramil hat geschrieben:... Kann man geänderte Werte in Listen direkt ansprechen oder müsste ich die änderbaren Werte immer an die selbe Stelle schreiben, um sie ändern zu können? Ist das direkte Ansprechen mit Grundlegenden Python-Kenntnissen realisierbar? Wie würde ein Befehl dafür aussehen?
Probier's doch einfach aus, wirst schon nichts kaputtmachen:

Code: Alles auswählen

>>> a = [1, 2, 3, 4]
>>> a[2] = 7
>>> a
[1, 2, 7, 4]
Aha, sieht so aus, daß das geht. Probieren geht über studieren! ;)
Aramil
User
Beiträge: 3
Registriert: Sonntag 13. November 2011, 19:12

Okay danke. Ich werde es ausprobieren.

Thread kann geschlossen werden.
Antworten