WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Grafische Nullstellen finden vs fzero

 

MoritzMoritz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2011, 04:44     Titel: Grafische Nullstellen finden vs fzero
  Antworten mit Zitat      
Hallo,
(habe heute begonnen mich mit Matlab zu beschäftigen)
ich habe aus reinem Interesse (und weil ich schon öfters daran gescheitert bin) begonnen den pH einer Lösung mit Na2HPO4 und Zitronensäure theoretisch zu beschreiben. Ein Teil des Codes sieht die Lösung einer kubischen? Gleichung vor. (eq 11.16 http://www.chembuddy.com/?left=pH-c.....p;right=pH-salt-solution)
Löse ich diese Gleichung über fzero, so erhalte ich eine komplexe Lösung (es hängt nehme ich an stark vom Startwert ab)
Löse ich die selbe Gleichung durch Plot der linken und rechten Seite und Ermittlung des Schnittpunktes, so sehe ich auf den ersten Blick (wenn für Variable ein vernünftiges Intervall gewählt wurde) wo sich beide Funktionen schneiden.

Fragen:

a) kann ich den Schnittpunkt als Skalar ausgeben ?
b) gibt es elegantere Möglichkeiten ?
c) Hat jemand ähnliche Rechnungen in Matlab o.Ä bereits gerechnet?


Mein Code:
Code:

clear
pKa1 = 3.13
pKa2 = 4.76
pKa3 = 6.4
pKab1 = 2.16
pKab2 = 7.21
pKab3 = 12.32
Kw = 10^(-14)
pKw = -log10(Kw)
Ka1 = 10^(-pKa1)
Ka2 = 10^(-pKa2)
Ka3 = 10^(-pKa3)
pKb1 = pKw - pKab1
pKb2 = pKw - pKab2
pKb3 = pKw - pKab3
Kb1 = 10^(-pKb3)
Kb2 = 10^(-pKb2)
Kb3 = 10^(-pKb1)
Kob1=Kb1
Kob2=Kb1*Kb2
Kob3=Kb1*Kb2*Kb1
Koa1=Ka1
Koa2=Ka1*Ka2
Koa3=Ka1*Ka2*Ka3
Ca=0.00275
Cb=0.1945
syms H
g2=Ca*(Koa1*H^2+2*Koa2*H+3*Koa3)/(H^3+(Koa1*H^2+Koa2*H+Koa3)) + Kw/H
g3=Cb*(Kob1*H*Kw^2+2*Kob2*H^2*Kw+3*Kob3*H^3)/(Kw+(H*Kob1*Kw^2+Kob2*H^2*Kw+Kob3*H^3)) + H
H=0:0.000001:0.05;
ezplot(g2,H)
hold
ezplot(g3,H)
syms x
H=x
g1 = Ca*(Koa1*H^2+2*Koa2*H+3*Koa3)/(H^3+(Koa1*H^2+Koa2*H+Koa3)) + Kw/H - Cb*(Kob1*H*Kw^2+2*Kob2*H^2*Kw+3*Kob3*H^3)/(Kw+(H*Kob1*Kw^2+Kob2*H^2*Kw+Kob3*H^3)) - H
x0=0.05
f =@(x)eval(g1)
Hplus=fzero(f,x0)
pH=-log10(Hplus)
 


sg

Moritz

P.S der ausgegebene pH Wert ist gilt nicht für Na2HPO4.


MoritzMoritz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2011, 05:14     Titel:
  Antworten mit Zitat      
hab die K`s vertauscht
Code:
clear
pKa1 = 3.13
pKa2 = 4.76
pKa3 = 6.4
pKab1 = 2.16
pKab2 = 7.21
pKab3 = 12.32
Kw = 10^(-14)
pKw = -log10(Kw)
Ka1 = 10^(-pKa1)
Ka2 = 10^(-pKa2)
Ka3 = 10^(-pKa3)
pKb1 = pKw - pKab1
pKb2 = pKw - pKab2
pKb3 = pKw - pKab3
Kb1 = 10^(-pKb1)
Kb2 = 10^(-pKb2)
Kb3 = 10^(-pKb3)
Kob1=Kb1
Kob2=Kb1*Kb2
Kob3=Kb1*Kb2*Kb1
Koa1=Ka1
Koa2=Ka1*Ka2
Koa3=Ka1*Ka2*Ka3
Ca=0.00275
Cb=0.1945
syms H
g2=Ca*(Koa1*H^2+2*Koa2*H+3*Koa3)/(H^3+(Koa1*H^2+Koa2*H+Koa3)) + Kw/H
g3=Cb*(Kob1*H*Kw^2+2*Kob2*H^2*Kw+3*Kob3*H^3)/(Kw+(H*Kob1*Kw^2+Kob2*H^2*Kw+Kob3*H^3)) + H
H=0:0.000001:0.05;
ezplot(g2,H)
hold
ezplot(g3,H)
syms x
H=x
g1 = Ca*(Koa1*H^2+2*Koa2*H+3*Koa3)/(H^3+(Koa1*H^2+Koa2*H+Koa3)) + Kw/H - Cb*(Kob1*H*Kw^2+2*Kob2*H^2*Kw+3*Kob3*H^3)/(Kw+(H*Kob1*Kw^2+Kob2*H^2*Kw+Kob3*H^3)) - H
x0=0.05
f =@(x)eval(g1)
Hplus=fzero(f,x0)
pH=-log10(Hplus)
 


Ich glaube da liegt ein Denkfehler meinerseits zugrunde. Ich werde wenn ich wieder ausgeschlafen bin meinen Mathe Professor aufsuchen.

Trotzdem würde mich Interessieren, ob jemand diese Gleichung für das Beschriebene Problem schon mal gelöst hat?
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.