私は、関数で記述された方程式のシステムを持っています。ODEシステム用のPythonコーディング
-
制限された反応物は、非循環製品または使用不能な「失われた製品」内にある。
生成物の組成が変化しないと仮定すると、システムに入る反応物1の量は、システムに入る反応物2の量に正比例している必要があります。したがって、反応物1の全てが消費されると、それ以上の反応物2が消費されない。
現在、反応物のリサイクルがない場合、反応物消費量の比は一定であるが、反応物がライン内で循環される場合には、使用される反応物の比率が変更される。
2番目の問題は、製品2のサイクリング中で、失われた製品が絶えず増加していないことです。代わりに、製品1とリサイクルされた製品との固定比率を維持しているようです。
私は両方の問題が私がシステム内の反応物をどのようにリサイクルしようとしたかに起因すると仮定します。どんな助けもありがとう。
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import math
import pylab as p
def sample_func (y,t):
k1 = 10**-4
k2 = k1/4
k3 = 0.1
Recycle0=0.8
Recycle2=0.7
R1= -k1*y[0]*y[2] # Rate of substance 1 consumption
R2= -k2*y[0]*y[2] # Rate of substance 2 consumption
#These must be constantly proportional to one another
R3= 0.2*R1+0.7*R2 #Product 1
R4= 0.8*R1+0.3*R2 #Product 2
R5=R3*Recycle0 #Recycled substance 1 of product 1
R6=R3*Recycle2 #Recycled substance 2 of product 1
R7=R3*(1-Recycle0)
R8=R3*(1-Recycle2)
used1 = R1
react1= -R1 - R5
used2 = R2
react2= -R2 - R6
prod1= -R3
prod2= -R4
recycledr1 =-R5
recycledr2 =-R6
lost1 =-R7
lost2 =-R8
return [used1, react1, used2,react2,prod1,prod2, recycledr1,recycledr2,lost1,lost2]
y0=(3,11,3,12,0.01,0.01,0.01,0.01,0.01,0.01)
tspan=np.arange(0,15000,1)
Conc= odeint(sample_func,y0,tspan)
react1 = Conc[:,0]
used1 = Conc[:,1]
react2 = Conc[:,2]
used2 = Conc[:,3]
prod1 = Conc[:,4]
prod2 = Conc[:,5]
recycledr1 = Conc[:,6]
recycledr2 = Conc[:,7]
print("Consumed R1 & R2 RATIOS AT DIFFERENT TIME POINTS")
print((Conc[1:2,1]-Conc[0:1,1])/(Conc[1:2,3]-Conc[0:1,3]), " 1 HOURS")
print((Conc[50:51,1]-Conc[0:1,1])/(Conc[50:51,3]-Conc[0:1,3]), "50 HOURS")
print((Conc[1000:1001,1]-Conc[0:1,1])/(Conc[1000:1001,3]-Conc[0:1,3]), "1000 HOURS")
plt.plot(tspan,react1,label='react1')
plt.plot(tspan,used1,label='used1')
plt.plot(tspan,react2,label='react2')
plt.plot(tspan,used2,label='used2')
plt.plot(tspan,prod1,label='product1')
plt.plot(tspan,prod2,label='product2')
plt.plot(tspan,recycledr1,label='recycled react 1')
plt.plot(tspan,recycledr2,label='recycled react 2')
plt.xlabel("time (hours)")
plt.ylabel("quantity")
plt.title("production v time")
plt.legend()
p.show()
よろしくお願いいたします。
ようこそセットアップ始めるのに役立つかもしれないリンクです。あなたの実際の質問は何ですか? – MrLeeh
ようこそありがとうございます。なぜ私が反応物質をリサイクルしようとしているときに、それが利用されている割合に影響を与えているのかを知りたい。 – Uaru427
また、製品2、ロスト1およびロスト2が時間の経過とともに蓄積していない理由を知りたいと思います。システムが反応物質から使い果たして、その3つのグループにすべての量が詰まっていないようにしたい。 – Uaru427