[ pH値と、加える希塩酸の体積を格納する配列を作成する。
>
pH=array(0..200):acid:=array(0..200):
[ アンモニアの共役酸であるアンモニウムイオンの酸解離定数の値Kaを設定する。
>
K_a:=2.0*10^(-5);
[ 水のイオン積 KW にその値を代入する。
>
K_w:=1.0*10^(-14);
[ 混合水溶液の水素イオン濃度(hion)を求める関数を作成する。
[ ここで a は、アンモニア水の体積mlで、xは加えた希塩酸の体積mlである
>
h_ion:=(x,a)->K_a*x^3+(01*(10-a)/(10+a)*K_a-K_a*K_w+K_w)*x^2-0.1*a/(10+a)*K_w*x-K_w^2;
[ 試しにpH値を求め、上で立てた式が正しいかどうかを確認する。
>
evalf(-log10(fsolve(h_ion(x,10),x,0..1)));
[ アンモニア水10mlに、希塩酸を0〜20mlまで、0.1×i ml毎に加えた場合のpH値を計算しその値を配列pH[i]に格納する。加えた塩酸の体積は配列acid[i]に格納する。
>
for i from 0 to 200 do
> pH[i]:=evalf(-log10(fsolve(h_ion(x,i/10),x,0..1)));
> acid[i]:=i/10.0;
> od:
[ 希塩酸を0〜20mlまで、0.1ml毎に加えた場合の、塩酸量と混合溶液のpH値の配列リストを作成する。
>
datalist:=[seq([acid[j],pH[j]],j=0..200)]:
[ 滴定曲線を描く。
>
with(plots):plot(datalist,HCl=0..20,pH=0..14,color=black,thickness=2);