A reacção $A+B \to C$ em fase líquida ocorre num reactor batch isotérmico.
Dados: a) Concentração em função do tempo partindo de $C_{Ao}=C_{Bo}=0,2\ M$
t=[0,2,5,10,20,30,40,60,80,100] # (min)
CA=[0.2,0.175,0.15,0.123,0.093,0.077,0.065,0.051,0.044,0.039] # (M)
b) Velocidade inicial para diferentes valores de concentração inicial
CAo=[0.2,0.3,0.12,0.08,0.3,0.3,0.2,0.1] # (M)
CBo=[0.2,0.3,0.12,0.08,0.15,0.1,0.25,0.2] # (M)
rAo=[0.86,2.4,0.24,0.09,0.84,0.45,1.22,0.43] # (mol l-1 h-1)
${\bf Objectivo}$: Calcular ordem global, ordens parciais em A e em B e constante de velocidade.
$(-r_A)=kC_A^{\alpha}C_B^{\beta}$
Pela análise dos dados vê-se que a metodologia a tomar é a seguinte:
1) Método integral – ordem global (?)
2) Método diferencial – n, α e β
3) Mínimos quadrados – α, β e k
Uma vez que $C_A=C_B$ porque a estéquiometria é 1:1 e os valores iniciais são iguais, a velocidade da reacção pode ser vista para este ensaio como $(-r_A)=kC_A^n\qquad n=\alpha+\beta$
%pylab
%matplotlib inline
from scipy import stats
from numpy import *
figure(figsize=(14,5))
y=zeros(len(CA)*3)
y.resize((len(CA),3))
for i in range(len(CA)):
y[i,0]=log(CA[0]/CA[i])
y[i][1]=1/CA[i]-1/CA[0]
y[i][2]=1/CA[i]**2-1/CA[0]**2
def graf(oo,s,r):
yr=zeros(len(CA))
for j in range(len(t)):
yr[j]=oo+s*t[j]
plot(t,yr)
annotate('n=%.1f'%i,xy=(20,0.8*yr[9]))
annotate('$R^2$=%.3f'%r,xy=(20,0.7*yr[9]))
slope=zeros(3)
intercept=zeros(3)
r_value=zeros(3)
p_value=zeros(3)
std_err=zeros(3)
for i in range(3):
slope[i], intercept[i], r_value[i], p_value[i], std_err[i] = stats.linregress(t,y[:,i])
subplot(1,3,i+1)
plot(t,y[:,i],'o--')
graf(intercept[i],slope[i],r_value[i])
As figuras mostram que nenhuma das relações é verificada, por isso a ordem não é inteira e a reacção não é elementar.
A ordem deve ser 1<n<2.
Temos de utilizar o método das velocidades iniciais da tabela b).
Como os primeiros 4 ensaios $C_{Ao}=C_{Bo}$ podemos utilizar o mesmo método anterior e dizer que $(-r_A)=kC_A^n\qquad n=\alpha+\beta$ e linearizar
figure(figsize=(3,3))
y=zeros(4)
x=zeros(4)
for i in range(4):
x[i]=log(CAo[i])
y[i]=log(rAo[i])
def graf(oo,s,r):
yr=zeros(4)
for j in range(4):
yr[j]=oo+s*x[j]
plot(x,yr)
annotate('n=%.1f'%s,xy=(-2,0.8*yr[3]))
annotate('$R^2$=%.3f'%r,xy=(-2,0.7*yr[3]))
annotate('$ln\ k$=%.4f'%oo,xy=(-2,0.6*yr[3]))
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
plot(x,y,'o--')
graf(intercept,slope,r_value)
Falta agora determinar $\alpha\ ou\ \beta$ uma vez que já sabemos que $n=\alpha+\beta=2,5$
Para os pontos da tabela b) em que $C_{Ao}\neq C_{Bo}$ isto é para os pontos 5 a 8.
$(-r_A)_o=kC_{Ao}^{\alpha}C_{Bo}^{\beta}=kC_{Ao}^{\alpha}C_{Bo}^{n-\alpha}=kC_{Bo}^n\frac{C_{Ao}}{C_{Bo}}^{\alpha}$ que lineariza
for i in range(4):
y[i]=log(rAo[i+4]/CBo[i+4]**2.5)
x[i]=log(CAo[i+4]/CBo[i+4])
def graf(oo,s,r):
yr=zeros(4)
for j in range(4):
yr[j]=oo+s*x[j]
plot(x,yr)
annotate('$\\alpha$=%.1f'%s,xy=(0.5,4))
annotate('$R^2$=%.3f'%r,xy=(0.5,3.75))
annotate('$ln\ k$=%.4f'%oo,xy=(0.5,3.5))
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
plot(x,y,'o')
graf(intercept,slope,r_value)
print "k=",exp(intercept)
Logo $\alpha=1\ e\ \beta=2,5-1=1,5$.
Por outro lado, k=48,21 $M^{-1,5}\ min^{-1}$
A velocidade é então
$(-r_A)=48,2\ C_A\ C_B^{1,5}$
Os ensaios da tabela b) podem ser descritos por
$(-r_A)_o=kC_{Ao}^{\alpha}C_{Bo}^{\beta}$
Esta equação pode ser linearizada
$ln(-r_A)_o=ln\ k+\alpha\ ln\ C_{Ao}+\beta\ ln\ C_{Bo}$
Pelo método dos mínimos quadrados é possível chegar às seguintes 3 equações para todos os pontos da tabela b)
$\quad ln\ k \qquad\qquad \alpha \qquad\qquad\qquad\qquad \beta$
y=zeros(3*3)
y.resize(3,3)
x=zeros(3)
for i in range(len(CAo)):
y[0,0]+=1
y[0,1]+=log(CAo[i])
y[0,2]+=log(CBo[i])
y[1,1]+=log(CAo[i])**2
y[1,2]+=log(CAo[i])*log(CBo[i])
y[2,2]+=log(CBo[i])**2
x[0]+=log(rAo[i])
x[1]+=log(CAo[i])*log(rAo[i])
x[2]+=log(CBo[i])*log(rAo[i])
y[1,0]=y[0,1]
y[2,0]=y[0,2]
y[2,1]=y[1,2]
lnk,a,b=linalg.inv(y).dot(x.T)
print "k=%.3f a=%.2f b=%.2f"%(exp(lnk),a,b)
A velocidade é então
$(-r_A)=47,6\ C_A\ C_B^{1,5}$
Tendo uma expressão diferencial é possível agora obter um modelo integrado e confirmar o modelo e obter uma constante de velocidade pela tabela a)
$-\frac{dC_A}{dt}=k\ C_A^{2,5}$ integra como $\frac{1}{C_A^{1,5}}- \frac{1}{C_{Ao}^{1,5}}=1,5\ k\ t$
y=zeros(len(t))
for i in range(len(t)):
y[i]=1/CA[i]**1.5-1/CA[0]**1.5
def graf(oo,s,r):
yr=zeros(len(t))
for j in range(len(t)):
yr[j]=oo+s*t[j]
plot(t,yr)
annotate('$R^2$=%.3f'%r,xy=(20,90))
annotate('$k$=%.4f'%(s/1.5),xy=(20,100))
slope, intercept, r_value, p_value, std_err = stats.linregress(t,y)
plot(t,y,'o')
graf(intercept,slope,r_value)
Da figura pode-se concluir que a ordem global é 2,5.
O valor de k obtido, diz que a experiência a) deve ter sido feita a uma temperatura inferior à de b).