Stoichtools:用于做化学计量的工具
StoichTools包含一组用于进行化学计量分析的Matlab函数。这些函数解析各种化学计量计算的标准化学符号,包括寻找分子量,平衡原子和电荷守恒的反应,寻找独立的反应,并显示希尔符号的公式。这些函数解释了变化和原子平衡,所以它们可以用来平衡离子反应和化学半反应。
Stoichtools拥有广泛的文档,包括一组工作的作业问题,展示了使用功能。
这些职能是为支持化学工程的介绍性课程而开发。金宝app
杰夫康多2010年12月18日
内容
什么是stoichtools?
Stoichtools适用于两种类型的数据:
- 化学公式。每个化学配方是用几乎通用的化学符号写入的绳子。例如,H2SO4.代表硫酸。分组是允许的(例如,CH3(CH2)6CH3对于辛烷值)用括号'()'或括号'[]'。充电由尾随+或 - 后跟可选数量(例如,Fe + 3.或者HSO4-)。可以包括相位信息作为终端(AQ),(L),(G)或(S)。在大多数位置可以使用细胞阵列一次使用多个公式(例如,{'H2SO4','H +','SO4-2'})。
- 原子代表性。许多计算需要了解电荷,以及化学物质中每种类型的原子数量。这保持在Matlab结构中,例如,例如,R.C是碳原子的数量。点后的符号是元素的标准1或2字符符号。象征问:保留给指示的费用。MATLAB结构阵列用于在单个变量中存储多个原子坏次数。
StoichTools提供以下类型化学计算的功能:
使用化学公式
- r = parse_formula(s)处理化学式以产生原子表示。该功能主要由其他功能用于处理化学公式。
- Hillformula.处理化学公式或原子经破坏以在标准山符号中产生化学式。山顶符号广泛用于代表化学数据库中的物种,例如NIST Chemistry网络本。
计算分子量
- mw = molweight(s)计算化合物的分子量。输入可以是化学式,化学式的细胞阵列,或原子表示阵列。如果未指示输出,则打印分子量表。
化学计量
- [A,原子,物种] =原子构建一组化合物的原子基质。元素a(i,j)是数量原子{i}在物种{J}。输入可以是化学式,化学式的细胞阵列,如果有离子物质,则特殊的原子'Q'表示物种的电荷。如果未指示输出,则以表格形式显示原子矩阵。
- v = stoich(s)计算一组化合物的化学计量基质。输入是化学式的细胞阵列,或原子表示阵列。列的列V.对应于令人满意的原子和电荷余额的独立化学反应。元素v(j,k)是物种的化学计量系数j在反应中K.。负值表示反应物,正值表示产品。如果没有指示输出,那么DISP_REACONT.用于显示所有独立反应。
- Vout = DISP_REACTION(v,s)如果没有输出,则格式化和显示化学反应表示的化学计量矩阵V.和物种数组S.。该物种可以是细胞阵列的公式或原子表示阵列。如果可行,将系数缩放为整数。IT整数系数太长,则显示Rational或浮点系数。如果指示输出,那么vout.是具有重新分配系数的化学计量矩阵,并且不显示反应。
解决方案的家庭作业问题金宝搏官方网站
StoichTools文件夹包含许多工作的作业问题。这些是Matlab脚本,标题在图案中hw_xx.m.。每个脚本都以包含问题语句的单元格开头。随后的细胞证明了解决问题的解决方案。可以使用MATLAB发布功能来查看作业文件。
解析化学公式
鉴于一系列化学物质,r = parse_formula(s)解析化学式的细胞阵列以产生结构阵列R.该值是存在于相应公式中存在的该元素的原子数。结构阵列包括用于该组种类中的每个原子元素的字段。我们称之为物种的原子代表。
%解析甲烷parse_formula('ch4')
ANS = C:1 H:4
其他解析示例
ex {1} ='nahco3';{2} ='KFE3(SO4)2(哦)6';%jorosite.{3} =“KFe3 (AsO4) 2 (HAsO4) 2》;%钾 - 铁 - 砷酸盐{4} ='(CH4)8(H2O)46';%甲烷包裹{4} ='hso4-(aq)';为了k = 1:长度(ex)disp(ex {k});parse_formula(ex {k})结尾
NaHCO3 ANS = NA:1 H:1 C:1 O:3 KFE3(SO4)2(OH)6 ANS = K:1 FE:3 S:2 O:14H:6 KFE3(ASO4)2(HASO4)2ANS = K:1 FE:3 AS:4 O:16 H:2 HSO4-(AQ)ANS = H:1 S:1 O:4问:-1
化学缩写和同位素
- 配方可包括D(氘)或T(氚)。这些被视为元素,包括在任何原子平衡中的不同物种。
- 常见的有机化学缩写Me(甲基,CH3),等(乙基,C 2 H 5),Bu(丁基,C4H9),pH(苯酚,C6H5)可以包含在式中。这些被其原子公式在解析过程中取代。
- 符号m(任何金属)和x(任何卤素)可用于公式中。含有符号M或X的公式具有未知的分子量。
parse_formula('d2o'parse_formula('etoh')Molweight({'H2O'那'd2o'那't2o'那'etoh'那'phoh'那'tio2'那'mo2'});
ANS = D:2 O:1 Ans = C:2 H:6 O:1种摩尔。wt。------- -------- H2O 18.02 D2O 20.03 T2O 22.03 ETOH 46.07 PHOH 94.11 TIO2 79.88 MO2 NAN
非化学计量公式
化学计量的一些应用涉及复杂的化学化合物,不易通过简单的化学梭菌描述。也可以解析所谓的“非化学计量”化合物。
细菌='ch1.8n0.24o0.36';parse_formula(细菌);
从原子到化学式
考虑到原子表示的结构阵列,| S = Hillformula(R)}构建相应化学式的细胞阵列。
辛烷值辛烷值= 8;辛烷值= 18;Hillformula(辛烷)
ans ='c8h18'
希尔符号和规范表征
Hill符号是一种常用的系统,用于以标准形式写入化学公式。%Hillformula(r)产生化学物质的简单规范表示。然而,注意,对于给定公式可能存在许多异构体。
s = {'zr3b2'那'hbr'那'hcl'那'ch3(ch2)6ch3'那'naco3'那'cac2'那'ch3oh'那......'ch3cooh'那'hno3'那'H2SO4'那'nh3'那'snh4'那'ch3hgch3'那'(ch3ch2)4pb'那......'[CO(NH3)6] +3'那'[b12h12] -2'};fprintf(“-15年代-15年代\ n % % \ n ---------- ----------\ n '那......'公式'那'山符号');为了k = 1:长度fprintf('%-15s%-15s \ n',s {k},char(hillformula(s {k}));结尾
公式山符号---------- ---------------- Zr3b2 b2zr3 hbr brh hcl ch3(ch2)6ch3 c8h18 naco3 cnao3 cac2 c2ca ch 3 4O4 hnO 3 hnO3 H2SO4 H2O4S NH3 H3N SNH4H4SN CH3HGCH3 C2H6Hg(CH3CH2)4PB C8H20PB [CO(NH3)6] + 3 COH18N6 + 3 [B12H12] -2 B12H12-2
分子量
Mw =摩尔重量(s)
给定细胞阵列的化学式,或原子表示的结构阵列,莫略计算相应的分子量载体。
%分子量的二甲基汞S ='ch3hgch3';mw = molweight('ch3hgch3');fprintf('二甲基汞的分子量(%s)=%g \ n',s,mw);
二甲基汞的分子量(CH3HGCH3)= 230.66
创建分子量表
如果molweight没有输出,那么它打印一个分子量的表。
molweight;
物种摩尔。wt。------- -------- CH3HGCH3 230.66
原子矩阵
[A,atoms,species] = atomic(s) [A,atoms,species] = atomic(r)
给定细胞阵列的化学式S.,或原子表示的结构阵列R.那原子计算原子矩阵A.原子是原子元素的细胞阵列,物种是一种细胞的物种。a(i,j)是物种{j}中的元素原子{i}的原子数。在没有输出参数的情况下调用时%,原子显示原子矩阵。
s = {'ch4'那'O2'那'H2O'那'二氧化碳'};原子;a =原子;DISP('');DISP('a =');disp(a);
CH4 O2 H2O CO2 C:1 0 0 1 H:4 0 2 0 O:0 2 1 2 A = 1 0 0 1 4 0 2 0 0 2 1 2
离子物质的原子基质
对于离子物质,添加了另外的行,由“Q”标记,表示矩阵中包括的每种物种上的净电荷。
s = {'fe + 3'那'so4-2'那'h +'那'哦-'那'H2O'那'fe2(so4)3'};原子;
FE + 3 SO4-2 H + OH-H2O FE2(SO4)3 FE:1 0 0 0 0 2 H:0 0 0 1 1 2 0 O:0 4 0 1 1 12 S:0 1 0 0 0 3问:3-2 1 -1 0 0
平衡反应
给定细胞阵列的化学式,或者是一系列原子表示,stoich (s)计算满足充电和原子余额的化学计量系数。如果未指定输出,则显示平衡反应。
stoich({'napb'那'ch3ch2cl'那'(ch3ch2)4pb'那'nacl'那'PB'});stoich({'h +(aq)'那'oh-(aq)'那'h2o(l)'});
4 NaPB + 4 CH3CH2CL <=>(CH3CH2)4PB + 4 NaCl + 3 PB H +(AQ)+ OH-(AQ)<=> H2O(L)
化学计量矩阵
给定细胞阵列的化学式,或原子表示的结构阵列,v = stoich(s)计算化学计量矩阵V.。v(n,r)是物种的化学计量系数N.在反应中R.。原子和化学计量矩阵满足关系a * v = 0。
s = {'c8h18'那'O2'那'C'那'CO'那'二氧化碳'那'H2O'};v = stoich(s);DISP('化学计量矩阵v =');DISP(v);
化学计量矩阵v = -1 0 0 0 -1 0 0 0 0 -1 25-2 2 -17 2 -1 9 0 0
确定独立反应
v = stoich(s)DISP_REACTION(v,s)
化学计量矩阵的列V.代表独立反应。功能DISP_REACTION(v,s)以常规人类可读形式显示反应。
s = {'c8h18'那'O2'那'C'那'CO'那'二氧化碳'那'H2O'};v = stoich(s);DISP_REACTION(v,s);
C8H18 + 17 CO2 <=> 25 CO + 9 H2O O 2 + 2 CO <=> 2 CO2 C + CO2 <=> 2 CO
复杂反应的进一步实例
例子http://www.chemistryhelp.net/chemisty-calculator/chemical -equation-balancer.
stoich({'p2i4'那'p4'那'H2O'那“H3PO4”那'ph4i'});stoich({'[Cr(N2H4CO)6] 4 [Cr(CN)6] 3'那'kmno4'那'H2SO4'那'k2cr2o7'那......'mnso4'那'二氧化碳'那'kno3'那'K2SO4'那'H2O'});stoich({'Cu(s)'那'hno3(aq)'那'Cu(no3)2(aq)'那'木栓)'那'h2o(l)'});stoich({'CU'那'hno3'那'H2O'那'Cu(No3)2'那'不'});stoich({'kmno4'那'C3H5(OH)3'那'k2co3'那'mn2o3'那'二氧化碳'那'H2O'});stoich({'k2cr2o7'那'fecl2'那'hcl'那'kcl'那......'crcl3'那'fecl3'那'H2O'});stoich({'BI(NO3)3(H2O)5'那'naoh'那'H2O2'那'rucl3'那......'nano3'那'nacl'那'bi2ru2o7'那'H2O'});stoich({'(NH4)2Moo4'那'nh4no3'那'na3po4'那'H2O'那......'(NH4)3 [P(MO3O10)4]'那'nano3'那'nh3'});stoich({'h2'那'CA(CN)2'那'naalf4'那'feso4'那'mgsio3'那'ki'那“H3PO4”那......'pbcro4'那'brcl'那'cf2cl2'那'so2'那'pbbr2'那'crcl3'那'mgco3'那......'kal(哦)4'那'fe(scn)3'那'pi3'那'na2sio3'那'caf2'那'H2O'});stoich({“NH4ClO4”那'nay(哦)4'那'ru(scn)3'那'PBR5'那'ticl2cri4'那'beco3'那......'rb2zro3'那'znat2'那'cat2i2'那'RB0.998YAT4'那“RuS2”那'bezro3'那'Zn(CN)2'那......'nahbr1.997'那“H3PO4”那'ticro4'那'cli'那'H2SO4'那'H2O'});
10 P2I4 + 13 P4 + 128 H 2 O <=> 32 H3PO4 + 40 pH4i 10 [Cr(N2H4CO)6] 4 [Cr(CN)6] 3 + 1176 kmnO4 + 1399 H2SO4 <=> 35 K2CR2O7 + 1176 MnSO4 + 420 CO 2+ 660 KNO3 + 223 K2SO4 + 1879 H 2 O 3 Cu(S)+ 8HNO3(AQ)<=> 3 Cu(NO 3)2(AQ)+ 2 NO(G)+ 4 H 2 O(L)3 Cu + 8 hnO3 <=> 4 H 2 O + 3 Cu(NO 3)2 + 2 NO 1 1N kmnO4 + 4 C3H5(OH)3 <=> 7 K 2 CO 3 + 7mN2O3 + 5 CO2 + 16 H2O K2CR2O7 + 6 FECL2 + 14 HCl <=> 2 KCl +2 CRCl3 + 6 FECL3 + 7 H2O 2 BI(NO 3)3(H2O)5 + 12 NaOH + H 2 O 2 + 2 ruCl3 <=> 6 NaCl + 6 NaCl + Bi2Ru2O7 + 17 H 2 O 12(NH4)2Moo4 + 3 NH4NO3 + Na3PO4 <=> 12 H 2 O +(NH 4)3 [P(Mo3O10)4] + 3纳米3 + 24 NH 3 88 H 2 + 15 Ca(CN)2 + 6 Naalf4 + 10 FeSO4 + 3mgsiO3 + 6 ki + 2 H3PO4 + 6 PBCRO4 +12 BRCL + 3 CF2Cl2 + 20 SO2 <=> 6 PBBR2 + 6 CRCL3 + 3 mgCO3 + 6 kal(OH)4 + 10 Fe(SCN)3 + 2 PI3 + 3 Na 2 SiO3 + 15 CAF2 + 79 H2O NH4ClO4 + 1.752 Nay(OH)4 + 1.9188 Ru(SCN)3 + 0.69974 PBR5 + 0.37423 TICL2CRI4 + 0.87425 BECL3 + 0.87425 RB2ZRO3 + 3.3782 ZNAT2 + 0.12575 CAT2I2 <=> 1.752 RB0.998YAT4 + 1.9188 RUS2 + 0.87425 BEZRO3 + 3.3782 ZN(CN)2 +1.752 NaHBR1.997 + 0.69974 H3PO4 + 0.37423 Ticro4 + 1.7485 CLI + 1.9188 H2SO4 + 1.6596 H2O
具有离子电荷的化学方程
离子物质上的电荷由+或 - 然后是指示电荷量的可选数字。如果存在离子物质,则电荷平衡包括在化学计量系数的计算中。
stoich({'clo2 +(aq)'那'H3O +(AQ)'那'cl2(g)'那'h2o(l)'那'clo3-(aq)'那'clo2(aq)'});stoich({'Bi + 3(aq)'那'hsno2-(aq)'那'oh-(aq)'那'Bi(s)'那'H2O'那'sno3-2(aq)'});stoich({'ch3ch2oh'那'cr2o7-2'那'h +'那'ch3cooh'那'cr + 3'那'H2O'});stoich({'一世-'那'i2'那'Mn + 2'那'mno4-'那'h +'那'H2O'});stoich({'cl2'那'cl-'那'fe + 2'那'fe + 3'});stoich({'Mn + 2'那'Bio-3'那'h +'那'mno4-'那'Bi3 +'那'H2O'});stoich({'npo2 + 2'那'NPO2(OH)H2C2O4 +'那'npo2 +'那'二氧化碳'那'h +'那'O2'});stoich({“H3PO4”那'(NH4)6MO7O24'那'h +'那'(NH4)3PO4(MOO3)12'那'nh4 +'那'H2O'});
4 ClO2 +(AQ)+ Cl2(g)+ 4 ClO3-(AQ)<=> 10 ClO2(AQ)8 H3O +(AQ)+ Cl 2(g)+ 8clo3-(aq)<=> 12 H2O(L)+ 10 clo2(aq)2 bi + 3(aq)+ 3 hsnO2-(aq)+ 9oh-(aq)<=> 2 Bi(s)+ 6 h 2 O + 3 sno3-2(aq)3 ch 3ch2Oh + 2CR2O7-2 + 16 H + <=> 3 CH3COOH + 4 Cr + 3 + 11 H 2 O 10 I- + 2mNO4- + 16 H + <=> 5 I2 + 2 Mn + 2 + 8 H2O Cl2 + 2 Fe + 2 <=> 2 Cl-+ 2 Fe + 3 4 Mn + 2 + 5 Bi3 + + 31 H 2 O <=> 15 Bio-3 + 62 H + + 4mNO4-6 NPO2 + 2 + 2 NPO2(OH)H2C2O4 + <=> 8 NPO2 + +4 CO2 + 6 H + + O 2 7 H3PO4 + 12(NH4)6MO7O24 + 51 H + <=> 7(NH4)3PO4(MOO3)12 + 51 NH4 + + 36 H2O
化学半方程
包括裸'e-'以平衡化学半反应。在酸性溶液中,如果其金宝搏官方网站中一个主要反应物含有氧气,则添加'H +'和'H2O'。在基本解决方案中,金宝搏官方网站如果其中一个主要反应物含有氧气,则添加'OH-'和'H2O'。
stoich({'Al + 3(aq)'那'al(s)'那'e-'});stoich({'cl-(aq)'那'cl2(g)'那'e-'});%酸性溶液金宝搏官方网站stoich({'mno4-(aq)'那'mn + 2(aq)'那'h2o(l)'那'h +(aq)'那'e-'});stoich({'O2(g)'那'h2o(l)'那'h +(aq)'那'e-'});stoich({'ag2o3'那'ag +'那'H2O'那'h +'那'e-'});stoich({'s2o3-2(aq)'那'(s)'那'h2o(l)'那'h +(aq)'那'e-'});stoich({'hooccooh(aq)'那“二氧化碳(g)”那'h2o(l)'那'h +(aq)'那'e-'});%碱溶液金宝搏官方网站stoich({'mno4-(aq)'那'mn + 2(aq)'那'h2o(l)'那'oh-(aq)'那'e-'});stoich({'Cr(哦)6-2'那'CRO4-2'那'H2O'那'哦-'那'e-'});stoich({'nh3oh(aq)'那'n2(g)'那'h2o(l)'那'oh-(aq)'那'e-'});stoich({'al(哦)4-(aq)'那'al(s)'那'h2o(l)'那'oh-(aq)'那'e-'});stoich({'zro(哦)2'那'zr'那'H2O'那'哦-'那'e-'});
Al + 3(aq)+ 3 e- <=> Al(s)2 cl-(aq)<=> cl2(g)+ 2 e-mnO 4-(aq)+ 8h +(aq)+ 5 e- <=> Mn + 2(AQ)+ 4 H 2 O(L)O 2(G)+ 4h +(AQ)+ 4 e- <=> 2 H 2 O(L)Ag2O3 + 6h + + 4 e-<=> 2 Ag + +3 H 2 O S2O3-2(AQ)+ 6 H +(AQ)+ 4 E- <=> 2 S(S)+ 3 H 2 O(L)HOOCCOOH(AQ)<=> 2 CO 2(G)+ 2 H +(AQ)+ 2 e-mnO 4-(aq)+ 4 h 2 O(l)+ 5 e-<=> Mn + 2(aq)+ 8h-(aq)Cr(OH)6-2 + 2 OH- <=> CRO4-2 + 4 H 2 O + 2 E-2 NH 3 OQ(AQ)+ 4 OH-(AQ)<=> N 2(G)+ 6 H 2 O(L)+ 4 e-Al(OH)4-(AQ)+ 3 e- <=> al(s)+ 4 oh-(aq)zro(OH)2 + H2O + 4 E- <=> Zr + 4 OH-
嵌套公式
Matlab正则表达式功能用于解析化学公式。虽然这使StoichTools变得简单和快速,但正则表达式的一个缺点是很难匹配嵌套表达式。因此,嵌套仅限于括号内的括号表达式或括号内的括号。根据这一规则,[Fe2(SO4)3]和(Fe2[SO4]3)是允许的,但(Fe2(SO4)3)和[Fe2[SO4]3]不允许。在实践中,化学公式很少需要超过两层的嵌套。
DISP(“这些工作都很好。”);molweight({'[fe2(so4)3]'那'(fe2 [so4] 3)'});fprintf('\ n \ n');尝试molweight({'(Fe2(SO4)3)'那'[fe2 [so4] 3]'})抓住例外(“但这没有。”);disp(例外);结尾
这些工作很好。物种摩尔。Wt . ------- -------- [ 价(SO4) 3) 399.88(铁(SO4) 3) 399.88但这并不。不能解析公式:(Fe2(SO4)3) ^
版本历史记录
- 2010/12/18提交给Matlab Central
- 2010/12/19更新的文档,添加了解决的作业
- 2010/12/19将原子矩阵的行顺序排列
- 2010/12/10扩展了正则表达式解析以包括阶段
- 2010/12/20增强的解析器接受非化学计量的公式
- 2010/12/20增强了DISP_REACHERTEACTION以获得更好的系数格式
- 2010/12/21解析器包括常见符号D,T,et,Me,Bu,pH
- 2010/12/30修复了所有Mclint消息,减少了McCabe复杂性
- 2010/12/30更新到Matlab Central
- 2010/12/30进一步改进错误处理(断言)
- 2010/12/31在Molweight中使用NaN固定错误
- 2010/12/31重命名了家庭作业文件,以便在MC上更有意义
- 2010/12/31更新到Matlab Central
做
- 添加生成/消费分析
- 增加反应分析的程度
- 包括一个电化学工作的例子(电池?)
- 为stoich添加显示功能
- 为化学物质数据添加网络专家簿查找