图和勒夏特列原理
Graphs and Le Chatelier’s Principle
我正在尝试使用 scipy
和 matplotlib
制作图表,我的想法是变量 k 和浓度用于平衡化学的交互式图形。也许我的等式有错误,下面没有制作图形类型示例,只有一个示例图形结局
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# To reaction A + B <=> C + D
k1=0.05
k2=0.05
tf= 200
dt=0.2
t = np.arange(0,tf+0.01, dt)
n = len(t)
Ca= np.ones(n)
Ca= np.ones(n)
Cb= np.ones(n)
Cc= np.zeros(n)
Cd= np.zeros(n)
def dC(C,tm):
Ca,Cb,Cc,Cd =C
r1 =k1*Ca
r2 =-k2*Ca
d1 = -r1
d2 = -r1 -r2
d3= r1-r2
d4= r2
return [d1,d2,d3,d4]
C =odeint(dC,[1,1,0,0], t)
Ca= C[:,0]
Cb= C[:,1]
Cc= C[:,0]
Cd= C[:,1]
plt.plot(t,Ca, 'r--', linewidth=2.0)
plt.plot(t,Cb, 'k--', linewidth=2.0)
plt.plot(t,Cc, 'b--', linewidth=2.0)
plt.plot(t,Cd, 'm--', linewidth=2.0)
plt.show()
我刚找到一个可以帮助你的例子。
我认为问题出在您的“绘图”函数中。尝试这样的事情:
from scipy.integrate import odeint
import numpy as np
def myode(C, t):
k1 = 1 # 1/min;
k_1 = 0.5 # 1/min;
Ca = C[0]
Cb = C[1]
ra = -k1 * Ca
rb = -k_1 * Cb
dCadt = ra - rb
dCbdt = -ra + rb
dCdt = [dCadt, dCbdt]
return dCdt
tspan = np.linspace(0, 5)
init = [1, 0]
C = odeint(myode, init, tspan)
Ca = C[:,0]
Cb = C[:,1]
import matplotlib.pyplot as plt
plt.plot(tspan, Ca, tspan, Cb)
我正在尝试使用 scipy
和 matplotlib
制作图表,我的想法是变量 k 和浓度用于平衡化学的交互式图形。也许我的等式有错误,下面没有制作图形类型示例,只有一个示例图形结局
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# To reaction A + B <=> C + D
k1=0.05
k2=0.05
tf= 200
dt=0.2
t = np.arange(0,tf+0.01, dt)
n = len(t)
Ca= np.ones(n)
Ca= np.ones(n)
Cb= np.ones(n)
Cc= np.zeros(n)
Cd= np.zeros(n)
def dC(C,tm):
Ca,Cb,Cc,Cd =C
r1 =k1*Ca
r2 =-k2*Ca
d1 = -r1
d2 = -r1 -r2
d3= r1-r2
d4= r2
return [d1,d2,d3,d4]
C =odeint(dC,[1,1,0,0], t)
Ca= C[:,0]
Cb= C[:,1]
Cc= C[:,0]
Cd= C[:,1]
plt.plot(t,Ca, 'r--', linewidth=2.0)
plt.plot(t,Cb, 'k--', linewidth=2.0)
plt.plot(t,Cc, 'b--', linewidth=2.0)
plt.plot(t,Cd, 'm--', linewidth=2.0)
plt.show()
我刚找到一个可以帮助你的例子。
我认为问题出在您的“绘图”函数中。尝试这样的事情:
from scipy.integrate import odeint
import numpy as np
def myode(C, t):
k1 = 1 # 1/min;
k_1 = 0.5 # 1/min;
Ca = C[0]
Cb = C[1]
ra = -k1 * Ca
rb = -k_1 * Cb
dCadt = ra - rb
dCbdt = -ra + rb
dCdt = [dCadt, dCbdt]
return dCdt
tspan = np.linspace(0, 5)
init = [1, 0]
C = odeint(myode, init, tspan)
Ca = C[:,0]
Cb = C[:,1]
import matplotlib.pyplot as plt
plt.plot(tspan, Ca, tspan, Cb)