强弱电解质比较
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
## WHAT IS IT?
This model demonstrates the kinetics of a simple reversible reaction. It demonstrates numerically that the application of the Principle of Stationary Concentrations is valid in this case.
In this model there are two kinds of molecules, green and red. Green turtles turn into red turtles bimolecularly whereas red turtles turn back into pairs of green turtles monomolecularly. You can control the rate at which this changes occur with sliders Kb and Ku.
The reaction here is a reversible reaction of the type:
```text
Kb
A + A <=======> B
Ku
```
An example of such a reaction would be dimerization of acetic acid:
```text
Kb
2 H C-COOH <=======> H C-COOH~...~HOOC-C H
3 Ku 3 3
```
This reaction is an example of a complex reaction which consists of two elementary reactions. The forward bimolecular reaction
```text
Kb
A + A --------> B
```
is characterized by the constant Kb and the reverse unimolecular reaction
```text
Ku
B ---------> A + A
```
is characterized by the constant Ku.
The system of ordinary differential equations (ODE) that describes the concentrations of A and B is given below:
```text
dA 2
-- = -2Kb * A + 2Ku * B (1)
dt
dB 2
-- = Kb * A - Ku * B (2)
dt
```
The usual initial conditions are A(0) = Ao and B(0) = 0. While it is possible to solve this system of ODE analytically, chemists usually apply the Principle of Stationary Concentrations when they investigate the kinetics of reactions of this type. The Principle says that one can assume that the concentrations of the species stop changing from some point on after the system reaches equilibrium. If concentrations are stationary, the derivatives
```text
dA dB
-- and --
dt dt
```
are zero. Hence one can replace the system of ODE above with the system of algebraic equations below:
```text
2
0 = -2Kb * A* + 2Ku * B* (1')
2
0 = Kb * A* - Ku * B* (2')
```
where concentrations marked with * are stationary concentrations. The second equation (2') is linearly dependent on the first equation (1'). Luckily we also have another equation coming from the law of the conservation of mass:
```text
A* + 2 * B* = Ao (3)
```
From equation (2') we can express B* in terms of A* :
```text
Kb 2
B* = -- A* (4)
Ku
```
We can now plug in expression (4) into (3) and then we will have a quadratic equation in terms of A*:
```text
Kb 2
A* + -- A* = Ao (5)
Ku
```
whose solution is:
```text
_____________
|
| Kb
| 1 + 4 * -- - 1
\| Ku
-------------------- (6)
Kb
2 * --
Ku
```
One can now find the stationary concentration of B using equation (4).
## HOW TO USE IT
Choose the values of Ku and Kb with appropriate sliders:
- Kb controls the rate of the forward reaction by which two green turtles turn bimolecularly into a single red turtle.
- Ku controls the rate of the reverse reaction, by which a red turtle turns unimolecularly into two green turtles.
Having chosen appropriate values of the constants, press SETUP to clear the world and create an initial number of green turtles. Note: we do not create red turtles initially, although this could be done in principle.
Press GO to start the simulation.
## THINGS TO NOTICE
You will see turtles wandering around the world and changing color. Pay more attention to the plot of the concentrations. Do the plots soon reach stationary concentrations?
## THINGS TO TRY
How do the stationary concentrations depend on the values of Kb and Ku? You can change Ku and Kb while the model is running. See if you can predict what the stationary concentrations will be with various combinations of Kb and Ku.
## EXTENDING THE MODEL
Try to implement the following reaction:
```text
Kb K2
A + A <======> B -------> C
Ku
```
This reaction underlines a vast number of microbiological processes (e.g. fermentation). You can read about its kinetics in any book on Biochemistry. Look up the so-called Michaeles-Menten equation. Does it check numerically?
Try to implement the following reaction:
```text
Kb K2
A + B <======> C -------> D
Ku
```
## RELATED MODELS
Enzyme Kinetics
Chemical Equilibrium
Simple Kinetics 2
Simple Kinetics 3
## CREDITS AND REFERENCES
Thanks to Mike Stieff for his work on this model.
## HOW TO CITE
If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.
For the model itself:
* Wilensky, U. (1998). NetLogo Simple Kinetics 1 model. http://ccl.northwestern.edu/netlogo/models/SimpleKinetics1. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Please cite the NetLogo software as:
* Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
## COPYRIGHT AND LICENSE
Copyright 1998 Uri Wilensky.
![CC BY-NC-SA 3.0](http://ccl.northwestern.edu/images/creativecommons/byncsa.png)
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.
This model was created as part of the project: CONNECTED MATHEMATICS: MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL MODELS (OBPML). The project gratefully acknowledges the support of the National Science Foundation (Applications of Advanced Technologies Program) -- grant numbers RED #9552950 and REC #9632612.
This model was converted to NetLogo as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227. Converted from StarLogoT to NetLogo, 2001.
Comments and Questions
; Li Ying created this module at Shaanxi Normal University in 2024. If you mention this model in a publication, we ask that you include the citations below. ;Ying, L. (2024). Comparison of Strong and Weak Electrolytes. School of Chemistry and Chemical Engineering, Shaanxi Normal University. breed [ch3cooh_ion mode1_ch3coo_] breed [ch3cooh_molecule mode1_ch3cooh] breed [cl_ion mode1_cl_] breed [h3o_ion_Strong_acid Strong_acid_h3o_] breed [h3o_ion_weak_acid Weak_acid_h3o_] turtles-own [attribute] globals [ Strong_Co Weak_Co Strong_PH Weak_PH Strong_elrpha Weak_elrpha water_cur water_max cl_count h3o_strong_count ch3coo_count ch3cooh_count h3o_weak_count ] ;初始设置 to setup clear-all reset-ticks set-default-shape ch3cooh_ion "mode1_ch3coo_" set-default-shape ch3cooh_molecule "mode1_ch3cooh" set-default-shape cl_ion "mode1_cl_" set-default-shape h3o_ion_Strong_acid "mode1_h3o_" set-default-shape h3o_ion_weak_acid "mode1_h3o_" set water_max water set water_cur 0 ;;起始浓度选择 ifelse Start_switch = "Starting concentration" [ set Strong_Co 0.1 set Weak_Co 0.1 set Strong_elrpha 0 ;;上层窗口初始化,创建cl和H3o模块 create-h3o_ion_Strong_acid (50) [ ; 在 x 范围 (-30, 30) 内生成随机坐标 let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 33) 内生成随机坐标 let random-ycor-ycor random 33 + 1 setxy random-xcor-xcor random-ycor-ycor set size 2.5 ] create-cl_ion (50) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random 33 + 1 setxy random-xcor-xcor random-ycor-ycor set size 3 set color (yellow - 0.4) ] ;;下层窗口初始化,创建醋酸分子和醋酸离子 水质子模块 create-ch3cooh_ion (1) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random -32 - 2 setxy random-xcor-xcor random-ycor-ycor set size 5 ] create-h3o_ion_weak_acid (1) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random -32 - 2 setxy random-xcor-xcor random-ycor-ycor set size 2 ] create-ch3cooh_molecule (49) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random -32 - 2 setxy random-xcor-xcor random-ycor-ycor set size 5 ] ] [;;起始PH选择 set Strong_Co 0.001 set Weak_Co 0.05814 set Strong_elrpha 0 ;;上层窗口初始化,创建cl和H3o模块 create-h3o_ion_Strong_acid (2) [ ; 在 x 范围 (-30, 30) 内生成随机坐标 let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 33) 内生成随机坐标 let random-ycor-ycor random 33 + 1 setxy random-xcor-xcor random-ycor-ycor set size 2.5 ] create-cl_ion (2) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random 33 + 1 setxy random-xcor-xcor random-ycor-ycor set size 3 set color (yellow - 0.4) ] ;;下层窗口初始化,创建ch3cooh/ch3coo和H3o模块 create-ch3cooh_ion (2) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random -32 - 2 setxy random-xcor-xcor random-ycor-ycor set size 4 ] create-h3o_ion_weak_acid (2) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random -32 - 2 setxy random-xcor-xcor random-ycor-ycor set size 2.1 ] create-ch3cooh_molecule (130) [ let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random -32 - 2 setxy random-xcor-xcor random-ycor-ycor set size 4 ] ] ; 在上半部分设置patches的颜色x:(-30,35)(30,35) y:(35,1) ask patches with [pycor > 0] [ set pcolor white ] ; 在中间部分设置patches的颜色 ask patches with [pycor = 0] [ set pcolor black ] ; 在下半部分设置patches的颜色x:(-300,-355)(300,-355) y:(-1,-355) ask patches with [pycor < 0] [ set pcolor white ] end to go ;;设置强酸elrpha set Strong_elrpha 100 ;;起始浓度选择 if water_cur < water_max[ set water_cur (water_cur + 1 ) calculate_elrpha (Weak_Co / (1 + water_cur)) calculate_Strong_acid_ph water_cur calculate_Weak_acid_ph water_cur ] if ticks mod 10 = 0 [ ask h3o_ion_Strong_acid [ ; 随机选择运动距离和角度 let distance_h30 1 ifelse (ycor > 2) and (ycor < 33) and (xcor > -29) and (xcor < 29) [ set heading random 360 ][ ; 左边墙 ifelse (xcor < -29) [ set heading 90 ][] ; 右边墙 ifelse (xcor > 29) [ set heading 270 ][] ; 下面墙 ifelse (ycor < 2) [ set heading 0 ][] ; 上面墙 ifelse (ycor > 33) [ set heading 180 ][] ; 左上角 ifelse (xcor <= -29) and (ycor >= 33) [ set heading 135 ][] ; 右上角 ifelse (xcor >= 29) and (ycor >= 33) [ set heading 315 ][] ; 左下角 ifelse (xcor <= -29) and (ycor <= 2) [ set heading 45 ][] ; 右下角 ifelse (xcor >= 29) and (ycor <= 2) [ set heading 225 ][] ] fd 1 ] ask cl_ion [ ; 随机选择运动距离和角度 let distance_h30 1 ifelse (ycor > 2) and (ycor < 33) and (xcor > -29) and (xcor < 29) [ set heading random 360 ][ ; 左边墙 ifelse (xcor < -29) [ set heading 90 ][] ; 右边墙 ifelse (xcor > 29) [ set heading 270 ][] ; 下面墙 ifelse (ycor < 2) [ set heading 0 ][] ; 上面墙 ifelse (ycor > 33) [ set heading 180 ][] ; 左上角 ifelse (xcor <= -29) and (ycor >= 33) [ set heading 135 ][] ; 右上角 ifelse (xcor >= 29) and (ycor >= 33) [ set heading 315 ][] ; 左下角 ifelse (xcor <= -29) and (ycor <= 2) [ set heading 45 ][] ; 右下角 ifelse (xcor >= 29) and (ycor <= 2) [ set heading 225 ][] ] fd 1 ] ;下半区间 ask ch3cooh_ion [ ; 随机选择运动距离和角度 let distance_h30 1 ifelse (ycor > -33) and (ycor < -3) and (xcor > -29) and (xcor < 29) [ set heading random 360 ][ ; 左边墙 ifelse (xcor < -29) [ set heading 90 ][] ; 右边墙 ifelse (xcor > 29) [ set heading 270 ][] ; 上面墙 ifelse (ycor > -3) [ set heading 180 ][] ; 下面墙 ifelse (ycor < -33) [ set heading 0 ][] ; 左上角 ifelse (xcor <= -29) and (ycor > -3) [ set heading 135 ][] ; 右上角 ifelse (xcor >= 29) and (ycor > -3) [ set heading 225 ][] ; 左下角 ifelse (xcor <= -29) and (ycor < -33) [ set heading 45 ][] ; 右下角 ifelse (xcor >= 29) and (ycor < -33) [ set heading 315 ][] ] fd 1 ] ask h3o_ion_weak_acid [ ; 随机选择运动距离和角度 let distance_h30 1 ifelse (ycor > -33) and (ycor < -3) and (xcor > -29) and (xcor < 29) [ set heading random 360 ][ ; 左边墙 ifelse (xcor < -29) [ set heading 90 ][] ; 右边墙 ifelse (xcor > 29) [ set heading 270 ][] ; 上面墙 ifelse (ycor > -3) [ set heading 180 ][] ; 下面墙 ifelse (ycor < -33) [ set heading 0 ][] ; 左上角 ifelse (xcor <= -29) and (ycor > -3) [ set heading 135 ][] ; 右上角 ifelse (xcor >= 29) and (ycor > -3) [ set heading 225 ][] ; 左下角 ifelse (xcor <= -29) and (ycor < -33) [ set heading 45 ][] ; 右下角 ifelse (xcor >= 29) and (ycor < -33) [ set heading 315 ][] ] fd 1 ] ask ch3cooh_molecule [;醋酸分子 ; 随机选择运动距离和角度 let distance_h30 1 ifelse (ycor > -33) and (ycor < -3) and (xcor > -29) and (xcor < 29) [ set heading random 360 ][ ; 左边墙 ifelse (xcor < -29) [ set heading 90 ][] ; 右边墙 ifelse (xcor > 29) [ set heading 270 ][] ; 上面墙 ifelse (ycor > -3) [ set heading 180 ][] ; 下面墙 ifelse (ycor < -33) [ set heading 0 ][] ; 左上角 ifelse (xcor <= -29) and (ycor > -3) [ set heading 135 ][] ; 右上角 ifelse (xcor >= 29) and (ycor > -3) [ set heading 225 ][] ; 左下角 ifelse (xcor <= -29) and (ycor < -33) [ set heading 45 ][] ; 右下角 ifelse (xcor >= 29) and (ycor < -33) [ set heading 315 ][] ] fd 1 ] ifelse Start_switch = "Starting concentration"[ Unitary_weak_acid_dissociation_equilibrium ] [ Unitary_weak_acid_dissociation_equilibrium_2 ] ] set cl_count count cl_ion set h3o_strong_count count h3o_ion_Strong_acid set ch3coo_count count ch3cooh_ion set ch3cooh_count count ch3cooh_molecule set h3o_weak_count count h3o_ion_weak_acid tick end to calculate_elrpha [Co_t] set Weak_elrpha (((sqrt (0.0000175 * 0.0000175 + 4 * 0.0000175 * Co_t ) - 0.0000175) / 2) / Co_t) * 100 end to calculate_Strong_acid_ph [water_t] set Strong_PH (- (ln (Strong_Co / (1 + water_t)) / ln 10)) end to calculate_Weak_acid_ph [water_t] set Weak_PH (- (ln ((sqrt (0.0000175 * 0.0000175 + 4 * 0.0000175 * (Weak_Co / (1 + water_t))) - 0.0000175) / 2)/ ln 10)) end to Unitary_weak_acid_dissociation_equilibrium ask patches [ let ch3cooh_ion-count count turtles-here with [breed = ch3cooh_ion] let h3o_ion_weak_acid-count count turtles-here with [breed = h3o_ion_weak_acid] let ch3cooh_molecule-count count turtles with [breed = ch3cooh_molecule] ask ch3cooh_ion [ let meeting-turtles h3o_ion_weak_acid in-radius 2 if count meeting-turtles > 0 [ ; 在半径5的范围内相遇时,创建新的ch3cooh_molecule turtle let turtle_ch3cooh_ion one-of turtles-here with [breed = ch3cooh_ion] ask turtle_ch3cooh_ion [ set breed ch3cooh_molecule ] ; 删除原来的ch3cooh_ions和h3o_ions ask meeting-turtles [ die ] ] ] ifelse ch3cooh_molecule-count > ((100 - Weak_elrpha) / 100 * 50)[ let turtle_ch3cooh_molecule one-of turtles with [breed = ch3cooh_molecule] ask turtle_ch3cooh_molecule [ create-h3o_ion_weak_acid_ 1 ] let turtle_ch3cooh_molecule_2 one-of turtles with [breed = ch3cooh_molecule] ask turtle_ch3cooh_molecule_2 [ set breed ch3cooh_ion ] ][] ] end to Unitary_weak_acid_dissociation_equilibrium_2 ask patches [ let ch3cooh_ion-count count turtles-here with [breed = ch3cooh_ion] let h3o_ion_weak_acid-count count turtles-here with [breed = h3o_ion_weak_acid] let ch3cooh_molecule-count count turtles with [breed = ch3cooh_molecule] ask ch3cooh_ion [ let meeting-turtles h3o_ion_weak_acid in-radius 2 if count meeting-turtles > 0 [ ; 在半径5的范围内相遇时,创建新的ch3cooh_molecule turtle let turtle_ch3cooh_ion one-of turtles-here with [breed = ch3cooh_ion] ask turtle_ch3cooh_ion [ set breed ch3cooh_molecule ] ; 删除原来的ch3cooh_ions和h3o_ions ask meeting-turtles [ die ] ] ] ifelse ch3cooh_molecule-count > ((100 - Weak_elrpha) / 100 * 130)[ let turtle_ch3cooh_molecule one-of turtles with [breed = ch3cooh_molecule] ask turtle_ch3cooh_molecule [ create-h3o_ion_weak_acid_ 1 ] let turtle_ch3cooh_molecule_2 one-of turtles with [breed = ch3cooh_molecule] ask turtle_ch3cooh_molecule_2 [ set breed ch3cooh_ion ] ][] ] end to create-h3o_ion_weak_acid_ [num-turtles] ask n-of num-turtles patches [ sprout 1 [ set breed h3o_ion_weak_acid let random-xcor-xcor (random 58) - 29 ; 在 y 范围 (1, 35) 内生成随机坐标 let random-ycor-ycor random -33 - 1 setxy random-xcor-xcor random-ycor-ycor set size 2 ] ] end
There is only one version of this model, created 6 months ago by Ying Li.
This model does not have any ancestors.
This model does not have any descendants.