function API1
function C=kinetics(theta,t)
c0=[0.575;0.748;0];
[T,Cv]=ode45(@DifEq,t,c0);
function dC=DifEq(t,c)
dcdt=zeros(3,1);
dcdt(1)=-theta(1).*(c(1).^1).*c(2).^1;
dcdt(2)=-theta(1).*(c(1).^1).*c(2).^1;
dcdt(3)=theta(1).*(c(1).^1).*c(2).^1;
dC=dcdt;
end
C=Cv;
end
T = [0 10 20 30];
t = T';
a_ydata = [0.575 0.1611725 0.10373 0.0999925];
A_Ydata = a_ydata';
b_ydata = [0.748 0.3336725 0.27623 0.2724925];
B_Ydata = b_ydata';
c_ydata = [0 0.4138275 0.47127 0.4750075];
C_Ydata = c_ydata';
c = [A_Ydata B_Ydata C_Ydata];
theta0=[0.5];
[theta,Rsdnrm,Rsd,ExFlg,OptmInfo,Lmda,Jmat]=lsqcurvefit(@kinetics,theta0,t,c);
fprintf(1,'\tRate Constants:\n')
for k1 = 1:length(theta)
fprintf(1, '\t\tTheta(%d) = %8.5f\n', k1, theta(k1))
end
tv = linspace(min(t), max(t));
Cfit = kinetics(theta, tv);
figure(1)
h = plot(t, c,'.');
set(h,{'Marker'},{'s';'d';'^'},{'MarkerFaceColor'},{'r';'b';'k'},{'MarkerEdgeColor'},{'r';'b';'k'});
hold on
hlp = plot(tv, Cfit,'LineWidth',1.5);
set(hlp,{'Color'},{'r';'b';'k'});
hold off
grid
xlabel('Time (min)')
ylabel('Concentration (M)')
legend(hlp, 'Rif', 'Tert', 'Oxazine', 'Location','N')
Cfit_mtx = kinetics(theta, t);
for k = 1:size(Cfit,2)
ypred = Cfit_mtx(:,k);
SSE = sum((c(:,k)-ypred).^2);
SST = sum((c(:,k)-mean(c(:,k))).^2);
Rsq(k) = 1 - (SSE/SST);
fprintf('\t\tR² c(%d) = %7.4f\n',k, Rsq(k))
end
end