, , , ,

A Universal Model for Titrations and Titration Curves Constructed Using MATLAB

, , , ,

 基金资助: 山东省高等学校精品课程.  2013BK205山东省高等教育应用型人才培养特色名校建设项目

 Fund supported: 山东省高等学校精品课程.  2013BK205山东省高等教育应用型人才培养特色名校建设项目

Abstract

In this article, the reactions for acid-base, complexometric, redox and precipitate titrations can be generalized as M + L = N. Accordingly, their titration curve functions can be expressed as two mathematical models. MATLAB was used to analyze the titration curve models. The changing side reaction coefficients in titration process were calculated by a simple iteration method. Finally, the exact titration curves were plotted using this facile method.

Keywords： Titration curves ; MATLAB ; Universal model

SUN Xiao-Bo, LI Lin, WANG Xiu-Xia, WANG Jin-Pi. A Universal Model for Titrations and Titration Curves Constructed Using MATLAB. University Chemistry[J], 2016, 31(5): 78-84 doi:10.3866/PKU.DXHX201505015

1 酸碱滴定和沉淀滴定模型

M + L = N

a = 0:0.001:2;

Kt = 10^14;

C0 = 0.1

d = (a - 1)./(a + 1);

b = Kt*C0*d;

e = b.^2;

g = sqrt(e + 4*Kt);

M = (-b + g)./(2*Kt);

pH = -log10(M)

plot(a,pM,'.')

图1

(a) NaOH滴定HCl；(b) Cl-滴定Ag+；(c) Br-滴定Ag+；(d) I-滴定Ag+浓度均为0.1 mol·L-1；pM分别代表pH、pAg

a = 0:0.001:2;

Kt = 10^14;

Ka = 1.8*10^(-5);

b = a - 1;

c = a + 1;

d = b./c;

for i = 2:1:2001

H(1) = 10^(-2.87);

alfa(i) = (Ka + H(i - 1) + 0.1/c(i))/(Ka + H(i - 1));

Ktsh(i) = Kt/alfa(i);

e1(i) = Ktsh(i)*0.1*d(i);

f1(i) = e1(i)^2;

g1(i) = sqrt(f1(i) + 4*Ktsh(i));

h(i) = (-e1(i) + g1(i))/(2*Ktsh(i));

H(i) = h(i)/alfa(i);

end

pH = -log10(H)

plot(a,pH,'.')

图2

(A) NaOH滴定HAc；(B) NaOH滴定不同Ka的弱酸浓度均为0.1 mol·L-1

2 络合滴定和氧化还原滴定模型

a = 0:0.001:2;

Kt = 10^10.69;

b = a - 1;

c = a + 1;

d = b./c;

c0 = 0.01;

e1 = Kt*c0*d + 1;

f1 = e1.^2;

g1 = sqrt(f1 + 4*Kt*c0./c);

M = ( - e1 + g1)/(2*Kt);

pM = - log10(M);

plot(a,pM,'.')

图4

(A)不同KMY′时的滴定曲线；(B)不同初始浓度M的滴定曲线

a = 0:0.001:2;

kt = 10^(1.44/0.059);

kfe = 10^(0.68/0.059);

b = a - 1;

c = a + 1;

d = b./c;

Fe2(1) = 0.1;

for i = 2:1:2001

alfa(i) = 1 + kfe*(0.1/c(i) - Fe2(i - 1));

ktsh(i) = kt/alfa(i);

e1(i) = ktsh(i)*0.1*d(i) + 1;

f1(i) = e1(i)^2;

g1(i) = sqrt(f1(i) + 4*ktsh(i)*0.1/c(i));

Fe2(i) = (-e1(i) + g1(i))/(2*ktsh(i));

Fe3(i) = 0.1/c(i) - Fe2(i);

Ce4(i) = Fe2(i);

Ce3(i) = Fe3(i);

E(i) = 1.44 + 0.059*log10(Ce4(i)/Ce3(i));

E1(i) = 0.68 + 0.059*log10(Fe3(i)/Fe2(i));

end

plot(a,E,'.',a,E1,'.')

/

 〈 〉