| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Gleichung höherer Ordnung (1631 mal gelesen)
|
Burli92 Mitglied
Beiträge: 4 Registriert: 26.07.2015
|
erstellt am: 26. Jul. 2015 12:02 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, ich bin ganz neu hier und hoffe ihr könnt mir helfen. Um den pH-Wert während einer Titration zu berechnen habe ich eine Gleichung wie im Bild zu sehen erhalten. Diese Gleichung möchte ich folgendermaßen umstellen: OH=f(C). C ist also meine Variable, OH möchte ich wissen, alles andere sind Konstanten. So, nun kann ich die Gleichung zwar mit solve lösen, aber nicht mit den Ergebnissen weiterrechnen bzw. diese in einer Grafik darstellen. Um den pH-Wert zu erhalten müsste ich noch pH=14+log(OH) rechnen. pH möchte ich dann über C als Kurve darstellen. kann mir jemand bei meinem Problem weiterhelfen? EDIT: ich benutze MatahCad Prime [Diese Nachricht wurde von Burli92 am 26. Jul. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rmix22 Mitglied
Beiträge: 146 Registriert: 13.09.2013
|
erstellt am: 26. Jul. 2015 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für Burli92
Du kannst eine symbolische Auswertung doch auch einer Variablen zuweisen. Dass das hier nicht möglich ist, liegt daran, dass du C als Bereichsvariable und nicht als Vektor definiert hast. Hättest du C als Vektor definiert (also erst i:=0..15 und dann C[i:=2+i*0.1), wäre das Ergebnis der symbolischen Auswertung ein korrekter Vektor, den du einer Variablen zuweisen kannst. Danach könntest du dann diesen Vektor über den Vektor C plotten. Alternativ kannst du aber die Definition von C komplett löschen und vor dem symbolischen Lösen OH(C):=... schreiben. Danach solltest du OH wie eine normal definierte Funktion plotten und auswerten können. Allerdings wirst du bei diesem Ansatz vermutlich Probleme mit den Mehrfachlösungen und komplexen Lösungen bekommen. Die Forderung OH>0 kann die Symbolik bei der Definition (noch) nicht auswerten, da ja C nur ein formaler Parameter ist und damit die konkreten Lösungen noch nicht bekannt sind. Es wird eine Fehlermeldung geben. Mann könnte das so umgehen, dass man die Symboilik immer alle Lösungen berechnen lässt und man dann eine normale, nachgeschaltete Funktion die passende positive herauspicken lässt. Das ist nicht so kompliziert wie es sich vielleicht anhört. Trotzdem meine ich, dass du vollständig auf Mathcad's Symbolik verzichten und einen ganz gewöhnlichen Lösungsblock verwenden solltest. Du bist doch ohnedies nur an symbolischen Lösungen interessiert und genau für Aufgaben wie diese sind Lösungsblöcke da. Diesen Lösungsblock kannst du als Funktion in Abhängigkeit von C definieren und hast danach eine ganz normale Funktion zum Plotten, Auswerten, Differenzieren, ... Ich habs mal für dich in Mathcad 15 realisiert, weil ich Prime nach dem Austesten mit Schaudern in den Müll befördert habe. MC15 ist zwar alt, aber eben immer noch wesentlich leistungsfähiger und schneller als Prime. Lösungsblöcke (in meinem Bild farblich markiert) sehen zwar in Prime anders aus und müssen auch explizit als echter Block eingefügt werden, aber ansonsten kannst du dich an meiner Vorlage orientieren. Es ist mal etwas, das auch in Prime noch funktioniert. Gruß RMix RMix22
[Diese Nachricht wurde von rmix22 am 26. Jul. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Burli92 Mitglied
Beiträge: 4 Registriert: 26.07.2015
|
erstellt am: 26. Jul. 2015 13:15 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnelle Antwort RMix22! Beide Lösungen scheinen logisch, aber ich glaube an meiner Ausführung passt was noch nicht Hier nochmal beide Lösungsversuche (mit ein paar mehr Konstanten). Siehst du den Fehler? PS: Ich glaub nicht, dass ich bei der Vektor-Methode oh auch als Vektor definieren muss. oh:= sollte reichen oder? PPS: Wenn ich C wieder als Bereichsvariable definiere wird die Gleichung gelöst, aber wie du gesagt hast kann ich dann der Lösung keine Variable zuordnen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rmix22 Mitglied
Beiträge: 146 Registriert: 13.09.2013
|
erstellt am: 26. Jul. 2015 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für Burli92
Ich hab in der Zwischenzeit meine obige Antwort editiert und einen alternativen Lösungsvorschlag angefügt. Wenn du eine Skalar-Funktion mit einem Vektor als Argument auswerten möchtest, musst du in Mathcad die sog. "Vektorisierung" verwenden. Ich kenn das Tastaturkürzel in Prime leider nicht, aber du solltest das in den Menüs (ich denke "Operatoren") finden - es sieht aus wie ein Vektor-Pfeil über dem Ausdruck. RMix EDIT: Hab eben ein wenig mit Prime gespielt und die Auswertung mit C als Vektor scheint mit und ohne Vektorisierung nicht zu klappen. Vielleicht wirkt Vektorisierung nur nativ bei numerischen Berechnungen. Aber mit dem Lösungsblock hast du, denke ich, eine gangbare Lösung. Dort würde bei Bedarf auch die Auswertung eines Vektors mit Vektorisierung klappen. Mit dem Wert von CTOL und dem Anfangsschätzer kann man noch ein wenig variieren. Ich hab herausgefunden, dass mit CTOL=10^-9 der Lösungsblock für manche Werte nahe bei 3.5 keine Lösung findet. 10^-7 hat sich dann als bessere Wahl herausgestellt. Das sind halt die Tücken der Numerik. [Diese Nachricht wurde von rmix22 am 26. Jul. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Burli92 Mitglied
Beiträge: 4 Registriert: 26.07.2015
|
erstellt am: 26. Jul. 2015 14:41 <-- editieren / zitieren --> Unities abgeben:
|
rmix22 Mitglied
Beiträge: 146 Registriert: 13.09.2013
|
erstellt am: 26. Jul. 2015 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für Burli92
Fein, dass es wie gewünscht geklappt hat. In dem Bereich, in dem du dich mit C bewegst, sollte es auch noch keine Konvergenzprobleme geben. Aber wenn C in die Nähe von 3.5 kommt (jedenfalls mit den Werten aus deinem ersten Post), kann der Lösungsblock unter uU manchmal Aussetzer zeigen und da kann man sich mit CTOL ein wenig helfen. Kann man in Prime auch fürs ganze Arbeitsblatt über das Menü setzen (zusammen mit TOL, ORIGIN). RMix [Diese Nachricht wurde von rmix22 am 26. Jul. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Burli92 Mitglied
Beiträge: 4 Registriert: 26.07.2015
|
erstellt am: 26. Jul. 2015 14:53 <-- editieren / zitieren --> Unities abgeben:
Hab zwischen den einzelnen Posts die Konstanten etwas verändert und dadurch ergeben sich andere Bereiche für C. Mit den Werten aus dem letzten Post ergeben sich keine Probleme. Danke nochmal für die schnelle Hilfe und die Erklärungen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |