[LON-CAPA-users] Titration problem--extracting limited data from an array
Robley Light
lon-capa-users@mail.lon-capa.org
Thu, 24 May 2007 10:02:02 -0400
I'm hoping someone can suggest a better way to handle this, either by coding
or by a mathmatical manipulation.
Is this something that maxima could do?
I found the code for plotting titration curves at Tom O'Havers' web site:
monoprotic acid: http://www.wam.umd.edu/~toh/models/TitrationDemo.html
triprotic acid: http://www.wam.umd.edu/~toh/models/Titration.html
So this is easy to code for gnuplot. For example, in the problem
res/fsu/GeneralChemLib/Lab/Titration/StandardizeBase.problem
I generate the arrays to be plotted as follows:
<script type="loncapa/perl">
$VolA=&random(10,80,10);
$ConcA=&random(0.01,0.08,0.0001);
$mmolA=$VolA*$ConcA;
$mmolB=$mmolA;
$VolBeq=&random(22.4,27.6,0.1);
$ConcB=$mmolB/$VolBeq;
$pKa=-1;
$pKw=14;
$Ka=10**-$pKa;
$Kw=10**-$pKw;
for ($pH=0; $pH<=12.99; $pH+=0.33){
push @pH, $pH;
$Hconc = 10**-$pH;
push @Hconc, $Hconc;
$VolB =
-$VolA*(($Hconc**3+$Ka*$Hconc**2-($Kw+$Ka*$ConcA)*$Hconc-$Kw*$Ka)/($Hconc**3
+($Ka+$ConcB)*$Hconc**2+($Ka*$ConcB-$Kw)*$Hconc-$Ka*$Kw));
push @VolB, $VolB;
}</script>
As O'Haver points out, this is an "inverse" solution, where [H+] is the
independent variable and the volume of base is the dependent variable, even
though one is plotting the other way.
This array gives a set of values in @pH and @VolB that vary in regular
increments of $pH (of 0.33 units), which is okay for plotting purposes. (I
could make the increments as small as I like).
What I would like to do for a different prelab problem is to generate array
data that is in regular increments of $VolB (say 0.05 mL), or roughly if not
exactly regular increments,--which is more like data one is likely to
generate in a lab titration. I want to present these array values in a table
rather than in a plot.
Short of solving the equation specifically for [H+] as a function of VolB
(probably possible in this case, very complicated in the di- and tri-protic
acid cases), is there a way to extract such data from the arrays generated
by the above code? My Perl knowledge is relatively limited.
Robley
*************************************************************
Robley J. Light Professor Emeritus of Chemistry and
Biochemistry
Department of Chemistry Phone: (850) 644-3844
and Biochemistry Email: rlight@chem.fsu.edu
Florida State University Fax: (850) 644-8281
Tallahassee, FL 32306-4390 Home Page:
http://www.chem.fsu.edu/editors/rlight
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.