Вопрос у меня касается моделирования кинетических уравнений, поэтому решила написать в раздел "Физическая химия". Так уж получилось, что мне нужно создать простейшую математическую модель для двух химических реакций:
А+В=С (k1=1) и пусть для простоты стадия будет необратимой, r1=k1*CA*CB;
В+С=Р (k2=1) и тоже пусть для простоты стадия будет необратимой, r2=k2*CB*CC.
У меня получилось, что:
dСА/dt=-k1*A*B=-r1;
dСВ/dt=-k1*A*B-k2*B*C=-r1-r2;
dСС/dt=k1*A*B-k2*B*C=r1-r2;
dСР/dt=k2*B*C=r2;
Соответственно в *.m-файл для расчета в MATLAB я записала:
А в ответ все время получается:function dydt=react(t,y)
A=y(1);
B=y(2);
C=y(3);
P=y(4);
global k1 k2
clc
clf
clear
dydt=zeros(4,1);
k1=1;
k2=1;
dydt(1)=-k1*A*B;
dydt(2)=-k1*A*B-k2*B*C;
dydt(3)=k1*A*B-k2*B*C;
dydt(4)=k2*B*C;
[t,y] = ode45(@react,[0 20],[0.0025 0.125 0 0]);
plot(t,y(:,1),'r',t,y(:,2),'-o',t,y(:,3),'b',t,y(:,4),'k')
end
/??? function dydt=react(t,y)
|
Error: Function definitions are not permitted in this context.
Хотя должны получиться четыре кинетические кривые.
В общем-то занимаюсь этим в первый раз, поэтому вообще не уверена в правильности.
Сам файл *.m-файл сохранен c:\Users\User\Documents\MATLAB\.
Может кто с таким сталкивался или хорошо в MATLAB разбирается, помогите, пожалуйста!
P.S. Знаю, что подобные модели можно делать в Excel, может тоже кто знает как? А то я Excel пользуюсь раз в год....
Всем заранее спасибо!