| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
 | HPE ProLiant Summer Academy 2025 in Wien, eine Veranstaltung am 17.09.2025
|
Autor
|
Thema: Einbinden von Diff.Gl.Systemen in Programmierteil (515 mal gelesen)
|
Hefepilz Mitglied
 Beiträge: 3 Registriert: 24.05.2010
|
erstellt am: 24. Mai. 2010 18:09 <-- editieren / zitieren --> Unities abgeben:         
Hallo liebe CAD.de-Mitglieder, schön, dass ich dieses Forum gefunden habe, für MathCAD ist das nicht so einfach. Habe folgendes Problem, für das ich mir von hier Hilfe erhoffe. Vielleicht kann mir jemand weiterhelfen. Und zwar habe ich ein Gleichungssystem mit zwei Differentialgleichungen mit rkfest gelöst. Das ist nicht weiter schwierig. Doch nun möchte ich es in einen Programmierteil einbinden, dort dann einen bestimmten Wert z.B. Z50 auswählen und mittels einer zweiten "normalen" Formel die Anfangswerte dieses Gleichungssystems neu berechnen. Und dies zyklisch z.B. 30x. Wenn ich das richtig verstehe, kann ich das mittels einer For-Schleife erreichen, doch wie setzte ich die Anfangswerte des Gleichungssystems immer wieder neu? Und wie lasse ich mir die Anfangswerte für jeden Zyklus in eine Tabelle ausgeben bzw. wie lasse ich mir die Anfangswerte in einem Diagramm in Abhängigkeit von der Zeit bzw. dem Zyklus darstellen (aus dem Programmierteil heraus)? Besten Dank schon im Voraus für jegliche Hilfe. mfg Hefepilz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Moderator Dipl. Maschinen Ing. / Supporter
       

 Beiträge: 3912 Registriert: 29.09.2004 Mathcad war besser als Prime, meine Meinung.
|
erstellt am: 24. Mai. 2010 19:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Hefepilz
Hall Hefepilz, Wenn ich dich richtig verstanden habe, kannst du deine gewünschte Situation folgendermassen erreichen. Du gibst deinem Gleichungssystem als Anfangswert die Variable über einen Vektor vor, und schreibst dann nach dem ersten Durchgang den Startwert für die nächste Schlaufe in den Vektor auf die nächste Position. z.B. der Vektor H wird für den Startwert verwendet, somit wird H[1 mit dem ersten Startwert belegt, und in der Berechnung wird entsprechend über die Laufvariable der Durchläufe, z.B. i, der Wert entsprechend mit H[i abgefragt. Am Ende des Durchgangs wird dann der neue Startwert mit H[i+1 hinterlegt. Somit wird im nächsten Durchlauf automatisch der richtige Wert abgefragt, da sich i ja um 1 erhöht hat. Gruss Mike ------------------ The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hefepilz Mitglied
 Beiträge: 3 Registriert: 24.05.2010
|
erstellt am: 25. Mai. 2010 18:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo Mike, vielen lieben Dank, das hat super funktioniert. Aber wie so oft steht man dann vor einem weiteren Problem. Für jeden Zyklus soll der Endwert in ein Diagramm übertragen werden. Also Endwerte in Abhängigkeit des i-ten Zyklusses grafisch darstellen. Ich habe es bisher nur geschafft den absoluten Endwert des Programms ausgeben zu lassen. Aber den Wert nach z.B. den zweiten, dritten oder vierten Durchlauf bekomme ich einfach nicht aus dem Programmierteil raus. Hast du hierzu vielleicht auch einen Tipp für mich? Grüße, Hefepilz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Moderator Dipl. Maschinen Ing. / Supporter
       

 Beiträge: 3912 Registriert: 29.09.2004 Mathcad war besser als Prime, meine Meinung.
|
erstellt am: 25. Mai. 2010 23:39 <-- editieren / zitieren --> Unities abgeben:          Nur für Hefepilz
Hmmm, soweit ich in meinem Beispiel sehe, wird in der Variable G immer der Endwert ausgegeben. Der immer neue Startwert H wird im Programm zwar verwendet, aber nicht ausgegeben. Gruss Mike ------------------ The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hefepilz Mitglied
 Beiträge: 3 Registriert: 24.05.2010
|
erstellt am: 26. Mai. 2010 08:45 <-- editieren / zitieren --> Unities abgeben:         
Hallo Mike, Ja, genau wie bei mir. Ich habe versucht es in Mathcad2000 und in der Testversion von MathCAD14 zu lösen. Meine Lösung sieht wie in Bild 1 des Anhangs aus. Allerdings bekomme ich hier, wie diskutiert, immer nur den letzten Wert, wenn alle Zyklen durchlaufen sind f(10) bringt den gleichen Wert wie z.B. f(20) etc. Vielleicht bringt es was die Konzentrationen "m" und "s" in Abhängigkeit von j, also nach jedem Zyklus tabellarisch sowie in einem Diagramm darzustellen. Dies ist mir bisher leider auch nicht gelungen. Meinst Du es gibt hierzu einen Trick. Für mein zweites Problem benötige ich nur die Endergebnisse über alle Zyklen "j". "m" und "s" möchte ich in Abhängikeit von "Delta t" und "gamma" darstellen. Hier auch wieder tabellarisch und in einem 3D-Diagramm. Mein Problem hierbei ist, dass ich mit mehreren for-Schleifen arbeite, aber ich die Daten wieder nicht aus dem Programmierteil herausbekomme. Meinen Versuch habe ich in Bild 2 des Anhangs mit angefügt. Kannst Du mir sagen, was ich falsch mache, bzw. wie ich es richtig machen könnte? Vielen lieben Dank. Hefepilz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Moderator Dipl. Maschinen Ing. / Supporter
       

 Beiträge: 3912 Registriert: 29.09.2004 Mathcad war besser als Prime, meine Meinung.
|
erstellt am: 26. Mai. 2010 17:25 <-- editieren / zitieren --> Unities abgeben:          Nur für Hefepilz
Zum Bild 1: Bei der Berechnung von L, sollte man die Variable j als Indizes einsetzten, ansonsten wird bei jedem Durchlauf das L überspeichert. Dafür kann man anstelle von f(j) nur f schreiben. Im weiteren muss man am Ende vom Programm noch die Variable angeben, welche übergeben werden soll. In meinem Beispiel steht am Ende vom Programm nochmals G, damit G übergeben wird. Beim zweiten Bild wird es unschön. Du hast drei Schleifen ineinander gestellt. Bei zwei Schleifen kann man L[d,j schreiben, ergibt bekannterweise eine Matrix. Mit der dritten Dimension tut man sich auf dem Blatt Papier schwer..... Gruss Mike ------------------ The Power Of Dreams Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Clayton Ehrenmitglied Konstrukteur
    
 Beiträge: 1632 Registriert: 07.02.2004 AMD Athlon 64X2 5600+, 1GB, Nvidia Quadro Pro FX 1100 Inventor Series 10 Mathcad 13
|
erstellt am: 26. Mai. 2010 22:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Hefepilz
|