李永濤,董燦生,張雨嫣,陸 樺,李 賽
(云南氟磷電子科技有限公司,云南 昆明 650309)
配制含氫氟酸或氟離子水溶液時,由于氫氟酸是一種弱酸且溶液中存在多種平衡[1],氟離子、氫離子等組分濃度不像強酸那樣簡單計算出來。當溶液中存在兩個以下平衡方程時,可以通過近似方法簡化方程,從而獲得方程的解析解。例如,在一元弱酸或二元弱酸溶液中,計算氫離子的濃度。但平衡方程超過3個時,解析解無法得到,數(shù)值解只能通過編程計算的方式得到[2]。
在涉及氫氟酸或氟鹽水溶液時,由于存在3個平衡方程、水的解離方程、氟守恒方程、電荷守恒等6個方程,構成了非線性方程組。要獲得該方程組的數(shù)值解,需要借助計算機編程求解。Octave軟件[3]的fsolve函數(shù)恰好可以對非線性方程組進行求解,簡化了復雜的算法設計過程,從而可以快速獲得氫氟酸或氟鹽水溶液中各組分的平衡濃度。
在求解氫氟酸水溶液體系組分平衡濃度時,Brahim[4]采用NRTL模型進行求解,得出采用3個平衡時,模型的解與實驗結果吻合較好。Kolasinski采用Mathematica軟件對氫氟酸水溶液中各組分濃度進行了求解[5]。Baeza等人采用Octave求解化學平衡問題[6-7],還提出了計算多平衡中化學組分濃度的系統(tǒng)方法[8]。Paz-Carcia等人采用基于反應程度的算法計算多物種化學平衡[9]。Glaser等人采用動態(tài)方法解決了酸及其共軛堿混合物多平衡問題[10]。
氫氟酸在水中發(fā)生解離反應,生成氫離子和氟離子,反應如下:
(1)
式中ax表示活度,Ka=6.84×10-4為解離常數(shù)(25 ℃ 時)。氫氟酸水溶液的活度系數(shù)見文獻[11-12]。
氫氟酸與氟離子發(fā)生締合反應,生成氟氫酸根離子,反應如下:
(2)
式中bx表示質(zhì)量摩爾濃度mol/kg,K1=5.0。
此外,氫氟酸能與氟氫酸根離子進一步發(fā)生締合反應,反應如下:
(3)
式中K2=0.58。氫氟酸水溶液中存在的3個平衡常數(shù)數(shù)值在文獻[13-15]中報道。
在水溶液中存在水的自解離平衡[15],即
Kw=[H+][OH-]=1.008×10-14(25 ℃)
(4)
(5)
溶液中的電荷守恒可以表示為:
(6)
以上方程(1)~(6)含有6個方程,6個未知數(shù),可以通過Octave進行求解。
1.1.1 求解方法一
1)設置初始猜測值。初始猜測值X0為一列向量。
2)調(diào)用fsolve函數(shù)。調(diào)用格式為[X,fval,info]=fsolve(fcn,X0)。fcn為需要求方程組的函數(shù)句柄,或函數(shù)名稱。輸出X為方程組的數(shù)值解,而第二個輸出fval為取值為X時,方程的值,為全零向量。第三個輸出info表示報告算法是否成功,info值為1表示方程組的解已經(jīng)收斂。
4)設定形式濃度的值,運行程序得到該形式濃度下,溶液的平衡濃度X。列向量X中的數(shù)值,與(i)中列出的未知數(shù)順序一致。
1.1.2 求解方法一程序代碼
1)設置主函數(shù)并列出初始猜測值
function[X]=composition
%初始猜測值
HF0=1e-5;
Hx0=1e-5;
F0=1e-5;
HF20=1e-5;
H2F30=1e-5;
%將初始猜測值寫為列向量X0
X0=[HF0;Hx0;F0;HF20;H2F30];
2)調(diào)用方程組函數(shù)fsolvefunction
fhandle=@fsolvefunction;
[X,fval,info]=fsolve(fhandle,X0);
X=abs(X);
3)編寫方程組函數(shù)
%將未知變量X賦值給方程變量
HF=abs(X(1));
Hx=abs(X(2));
F=abs(X(3));
HF2=abs(X(4));
H2F3=abs(X(5));
%定義形式濃度mol/kg
a0=0.1;%氫氟酸(HF)形式濃度
b0=0;%氫離子(H+)形式濃度
c0=0;%氟離子(F-)形式濃度
%列出平衡常數(shù)
Ka=6.84e-4;
K1=5.0;
K2=0.58;
%列出方程組
eq1=HF+F+2*HF2+3*H2F3-a0-c0-2*d0;
eq2=F+HF2+H2F3+b0-Hx-c0-d0;
eq3=Hx*F/HF-Ka;
eq4=HF2/(HF*F)-K1;
eq5=H2F3/(HF*HF2)-K2;
%將方程組寫為列向量F。
F=[eq1;eq2;eq3;eq4;eq5];
1.1.3 求解方法二
參考文獻[7]的方法,方程(1),(2)和(3)取負常用對數(shù),然后將用到的五個方程進行歸一化,再求解。
1.1.4 求解方法二代碼
function[X]=composition2
%初始猜測值
pHF0=1;
pHx0=2;
pF0=2;
pHF20=1;
pH2F30=2;
X0=[pHF0;pHx0;pF0;pHF20;pH2F30];
%調(diào)用方程組函數(shù)
fhandle=@fsolvefunction;
[X,fval,exitflag]=fsolve(fhandle,X0);
X=10.^-X;
function F=fsolvefunction(X)
%將未知變量X賦值給方程變量
pHF=X(1);
pHx=X(2);
pF=X(3);
pHF2=X(4);
pH2F3=X(5);
HF=10^-X(1);
Hx=10^-X(2);
F=10^-X(3);
HF2=10^-X(4);
H2F3=10^-X(5);
%定義形式濃度mol/kg
a0=0.1;%氫氟酸(HF)形式濃度
b0=0;%氫離子(H+)形式濃度
c0=0;%氟離子(F-)形式濃度
%列出平衡常數(shù)
pKa=-log10(6.84e-4);
pK1=-log10(5.0);
pK2=-log10(0.58);
%列出方程組
eq1=1-(HF+F+2*HF2+3*H2F3)/(a0+c0+2*d0);
eq2=1-(F+HF2+H2F3+b0)/(Hx+c0+d0);
eq3=1-(pHx+pF-pHF)/pKa;
eq4=1-(pHF2-pHF-pF)/pK1;
eq5=1-(pH2F3-pHF-pHF2)/pK2;
%將方程組寫為列向量F。
F=[eq1;eq2;eq3;eq4;eq5];
1.1.5 運行測試
將上述代碼分別保存為 composition.m,composition2.m文件,放在Octave的運行路徑下。在Octave程序命令窗口輸入X=composition或X2=composition2,即可求解出X或X2的數(shù)值。經(jīng)驗證,兩種方法獲得的解完全一致。
將運行上述代碼的結果與文獻[16]的實驗數(shù)據(jù)進行對比,結果如圖(1),圖(2)和圖(3)所示。從圖中(實線)可看出,模擬結果對氫氟酸和氫離子的平衡濃度結果較好,對氟離子平衡濃度有約20%的負偏差。出現(xiàn)偏差的原因是,方程式(1)沒有采用活度系數(shù)進行計算。采用活度系數(shù)校正計算結果與實驗結果吻合均較好(圖中虛線)。
圖1 氫氟酸活度模擬值與實驗值對比
圖2 氫離子活度模擬值與實驗值對比
圖3 氟離子活度模擬值與實驗值對比
模擬氫氟酸形式濃度從0.1~2 mol/kg 變化時,溶液中各組分平衡濃度(活度)的分布。將程序中形式濃度部分取a0的值從0.1到2(每次取一個值進行計算),b0,c0,d0值為零,保持不變。計算出不同氫氟酸形式濃度下各組分多組平衡濃度數(shù)值,并繪圖可得如圖(4)所示各組分濃度隨氫氟酸形式濃度變化曲線圖。
從圖(4)可看出氫氟酸的平衡濃度要小于形式濃度,溶液中存在較多的氫氟酸。隨著氫氟酸形式濃度的增加,氟離子平衡濃度先增加后減少,而氟氫酸根離子濃度非線性地升高。
圖4 氫氟酸稀溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
模擬含有 0.1 moL/kg 鹽酸,氫氟酸形式濃度從0.1~2 moL/kg 變化時,溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取a0的值從0.1到2(每次取一個值進行計算),b0=0.1,c0,d0值為零,保持不變。計算出不同氫氟酸形式濃度下各組分平衡濃度的多組數(shù)值,并繪圖可得如圖(5)所示的各組分濃度隨氫氟酸形式濃度的變化曲線圖。
圖5 氫氟酸-鹽酸溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
從圖(5)可看出,氫離子平衡濃度從 0.1 moL/kg 的基礎上增加到 0.2 moL/kg,這是由于溶液中含有 0.1 moL/kg的鹽酸。氟離子濃度逐漸增加,但濃度比沒有鹽酸時要小。氟氫酸根離子濃度非線性地增加。
模擬氟化鈉濃度 0.5 moL/kg,氫氟酸形式濃度從0.1~2 moL/kg 變化時,溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取a0的值從0.1到2(每次取一個值進行計算),b0=0,c0=0.5,d0值為零,保持不變。計算出不同氫氟酸形式濃度下各組分平衡濃度多組數(shù)值,并繪圖可得如圖(6)所示的各組分濃度隨氫氟酸形式濃度變化曲線圖。
圖6 氫氟酸-氟化鈉溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
從圖(6)可看出,氫離子平衡濃度從0增加到 0.02 moL/kg,這是由于溶液中開始時氫氟酸濃度較小,解離出的氫離子與溶液中的氟離子反應。氟離子濃度逐漸減少,除了參與氫離子的反應,還與氫氟酸反應生成氟氫酸根離子。氟氫酸根離子濃度非線性地先增加后減少。
模擬氟氫化鉀形式濃度從0.1~2 moL/kg 變化時,溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取d0的值從0.1到2(每次取一個值進行計算),a0,b0,c0值為零,保持不變。計算出不同氟氫化鉀形式濃度下各組分濃度多組數(shù)值,并繪圖可得如圖(7)所示的各組分濃度隨氟氫化鉀形式濃度變化曲線圖。
圖7 氟氫化鉀溶液中各組分平衡濃度隨氫氟酸形式濃度的分布
從圖(7)可看出,氫氟酸的平衡濃度從0.05增加到 0.35 moL/kg,這是由于溶液中氟氫酸根離子分解產(chǎn)生氟離子和氫氟酸。氟離子濃度逐漸增加,除了參與氫離子的反應,還與氫氟酸反應生成氟氫酸根離子。氟氫酸根離子濃度幾乎線性地增加。
模擬鹽酸形式濃度從0.1~2 moL/kg 變化時,1 moL/kg 氟化鈉溶液中各組分平衡濃度(活度)的分布。將程序中的形式濃度部分取b0的值從0.1到2(每次取一個值進行計算),a0=0,c0=1,d0=0,保持不變。計算出不同鹽酸形式濃度下各組分濃度多組數(shù)值,并繪圖可得如圖(8)所示的各組分濃度隨鹽酸形式濃度變化曲線圖。
圖8 氟化鈉溶液中各組分平衡濃度隨鹽酸形式濃度的分布
從圖(8)可看出,氫氟酸平衡濃度從0增加到 1 mol/kg,這是由于鹽酸的加入,氫離子與氟離子反應生成氫氟酸。氟離子濃度逐漸減少,除了參與氫離子的反應,還與氫氟酸反應生成氟氫酸根離子。氟氫酸根離子濃度先增加后減少。鹽酸形式濃度 0.5 moL/kg 時,氟氫酸根離子濃度最大,約為 0.24 mol/kg。
利用Octave開源軟件的fsolve函數(shù),解決了氫氟酸溶液體系中各組分平衡濃度計算問題。討論了五種不同情形下,氫氟酸或氟化鹽水溶液中各組分平衡濃度的計算方法及模擬結果,可直觀了解各組分平衡濃度隨形式濃度的變化情況。