4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X =...

49
03/21/22 1 Example by Xueyang Feng: Nov 16th ameter fitting for ODEs using fmincon functi X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to the linear equalities Aeq*X = Beq as well as A*X <= B. (Set A=[] and B=[] if no Inverse problem (from experimental data to model construction) Part 2

Transcript of 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X =...

Page 1: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

04/18/23 1

Example by Xueyang Feng: Nov 16th

Parameter fitting for ODEs using fmincon function

X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to the linear equalities Aeq*X = Beq as well as A*X <= B. (Set A=[] and B=[] if no inequalities exist.)

Inverse problem (from experimental data to model construction)

Part 2

Page 2: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

d) Parameter fitting using nlinfit

Inverse problemUnlike forward problems, inverse problems require experimental data, and an iterative solution. Because inverse problems require solving the forward problem numerous time, the ode45 solver will be nested within a nonlinear regression routine called “nlinfit.”The syntax is: [param, r, J, COVB, mse] = nlinfit(X, y, fun, beta0);

returns the fitted coefficients param, the residuals r, the Jacobian J of function fun, the estimated covariance matrix COVB for the fitted coefficients, and an estimate MSE of the variance of the error term. X is a matrix of n rows of the independent variabley is n-by-1 vector of the observed data

fun is a function handle to a separate m-file to a function of this form:yhat = fun(b,X)

where yhat is an n-by-1 vector of the predicted responses, and b is a vector of the parameter values. beta0 is the initial guesses of the parameters.

Page 3: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Example 1: Model fitting ODE equation

0 1 2 3 4 5 6 7 8 9 10-20

0

20

40

60

80

100

120

time (min)

y

ypred

yobs

ykdt

dy

Based on experimental data, find y0 and k.

data =xlsread('exp_data.xls'); %read data from excelyo=100; k=0.6;beta0(1)=yo; beta0(2)=k; x=data(:,1); yobs=data(:,2);[param,resids,J,COVB,mse] = nlinfit(x,yobs,'forderinv',beta0);rmse=sqrt(mse); %root mean square error = SS/(n-p)%R is the correlation matrix for the parameters, sigma is the standard error vector[R,sigma]=corrcov(COVB);%confidence intervals for parametersci=nlparci(param,resids,J);%computed Cpredicted by solving ode45 once with the estimated parametersypred=forderinv(param,x);%mean of the residualsmeanr=mean(resids);

Page 4: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

figure hold onh1(1)=plot(x,ypred,'-','linewidth',3); %predicted y valuesh1(2)=plot(x,yobs,'square', 'Markerfacecolor', 'r');legend(h1,'ypred','yobs')xlabel('time (min)')ylabel('y') %residual scatter plotfigurehold onplot(x, resids, 'square','Markerfacecolor', 'b');YLine = [0 0]; XLine = [0 max(x)];plot (XLine, YLine,'R'); %plot a straight red line at zeroylabel('Observed y - Predicted y')xlabel('time (min)‘)

Function with ode45

function y = forderinv(param,t)%first-order reaction equationtspan=t; %we want y at every t[t,y]=ode45(@ff, tspan, param(1)); %param(1) is y(0)

function dy = ff(t, y) %function that computes the dydt dy(1)= -param(2)*y(1); end

end

Page 5: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

0 1 2 3 4 5 6 7 8 9 10-15

-10

-5

0

5

10

15

Obs

erve

d y

- P

redi

cted

y

time (min)

0 1 2 3 4 5 6 7 8 9 10-20

0

20

40

60

80

100

120

time (min)

y

ypred

yobs

One One ODEODE

Time y0 107.26370.10101 102.93940.20202 92.712750.909091 75.156141.010101 70.47411.111111 69.836051.212121 57.005481.313131 60.039611.616162 54.017951.717172 56.796461.818182 53.818661.919192 49.675122.020202 42.04592.121212 40.426332.525253 41.067352.626263 39.485812.727273 34.282542.828283 30.36892.929293 31.698773.232323 25.204353.333333 27.201773.434343 19.713423.535354 26.317083.939394 23.208184.040404 15.54494.343434 19.089234.444444 16.082624.545455 19.265724.646465 23.761794.747475 11.854514.848485 7.6286064.949495 7.998508

Time y5.050505 8.5414715.454545 12.463445.555556 6.9446965.656566 15.905495.757576 5.7177275.858586 9.6375265.959596 4.5316736.060606 5.4467196.161616 7.2031936.262626 7.023176.666667 16.224086.767677 5.2867066.868687 11.74216.969697 -4.341037.070707 9.1038464173957.575758 9.9981287.676768 6.7377917.777778 7.4604898.181818 4.7230438.282828 8.3949248.383838 -0.456548.484848 0.9102258.888889 7.6622958.989899 -0.045589.090909 2.1020229.191919 1.4546579.292929 4.7977099.393939 9.162239.494949 -5.947429.59596 12.271489.69697 5.95653410 3.329466

Raw data File name: exp_data.xls

Page 6: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

/s

Yp/s=Yx/s*Yp/x

0 5 10 15 20 250

5

10

15

time (min)

y

S

XP

Three ODES for batch Three ODES for batch fermentationfermentation

Page 7: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Three ODEs parameter fitting

t X P S

0 0.05 0 15

2.7 0.082555 0.019533 14.86978

5.4 0.136259 0.051755 14.65496

8.1 0.224763 0.104858 14.30095

14 0.667768 0.370661 12.52893

20.5 2.151108 1.260665 6.595568

24.1 3.652464 2.161478 0.590144

File name: HW217.xls

Page 8: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

clear all %clear all variablesglobal y0data =xlsread('HW217.xls');%initial conditionsy0=[0.05 0 15];%initial guessUmax=0.1; Ks=10; Ypx=0.11; Yxs=0.45;beta0(1)=Umax; beta0(2)=Ks; beta0(3)=Ypx; beta0(4)=Yxs;%Measured datax=data(:,1);yobsX=data(:,2);yobsP=data(:,3);yobsS=data(:,4);yobs=[yobsX; yobsP; yobsS];%nlinfit returns parameters, residuals, Jacobian (sensitivity coefficient matrix), %covariance matrix, and mean square error. ode45 is solved many times%iteratively[param,resids,J,COVB,mse] = nlinfit(x, yobs,'forderinv2', beta0);

Fitting four parameters

Script

Page 9: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

rmse=sqrt(mse); %root mean square error = SS/(n-p)n=size(x); nn=n(1); %confidence intervals for parametersci=nlparci(param,resids,J); %computed Cpredicted by solving ode45 once with the estimated parametersypred=forderinv2(param,x);ypredX=ypred(1:nn);ypredP=ypred(nn+1:2*nn);ypredS=ypred(2*nn+1:3*nn); %mean of the residualsmeanr=mean(resids);

Script

Page 10: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

figure hold onplot(x, ypredX, x, ypredP, x, ypredS); %predicted y valuesplot(x, yobsX, 'r+', x, yobsP, 'ro', x, yobsS, 'rx');xlabel('time (min)')ylabel('y') %residual scatter plotx3=[x; x; x];figurehold onplot(x3, resids, 'square', 'Markerfacecolor', 'b');YLine = [0 0]; XLine = [0 max(x)];plot (XLine, YLine,'R'); %plot a straight red line at zeroylabel('Observed y - Predicted y')xlabel('time (min)‘)

Script

Page 11: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

function y = forderinv2(param,t)%first-order reaction equationglobal y0;tspan=t; %we want y at every t[t,y]=ode45(@ff,tspan,y0); %param(1) is y(0) function dy = ff(t,y) %function that computes the dydt dy(1)= param(1)*y(3)/(param(2)+y(3))*y(1); %biomass dy(2)= param(1)*param(3)*y(3)/(param(2)+y(3))*y(1); %product dy(3)= -1/param(4)*dy(1)-1/(param(3)*param(4))*dy(2); %substrate dy=dy'; end % after the ode45, rearrange the n-by-3 y matrix into a 3n-by-1 matrix% and send that back to nlinfit. y1=y(:,1); y2=y(:,2); y3=y(:,3);y=[y1; y2; y3]; end

Function and sub-function

Page 12: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

3. Simulink

Blocks Blocks: generate, modify, combine, and display signals Typical blocks Continuous:  Linear, continuous-time system elements (integrators, transfer functions, state-space models, etc.) Discrete:  Linear, discrete-time system elements (integrators, transfer functions, state-space models, etc.) Functions & Tables:  User-defined functions and tables for interpolating function values Math:  Mathematical operators (sum, gain, dot product, etc.) Nonlinear:  Nonlinear operators (coulomb/viscous friction, switches, relays, etc.) Signals:  Blocks for controlling/monitoring signals Sinks:  Used to output or display signals (displays, scopes, graphs, etc.) Sources: Used to generate various signals (step, ramp, sinusoidal, etc.)

Lines transfer signals from one block to another

Basic elements

Page 13: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

3. Simulink

The graphic interfaces

Matlab

Simulink

Type “simulink” in the command window

Page 14: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Tutorial example

04/18/23

x = sin (t)

simout

Page 15: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Simulink example 2

Creep compliance of a wheat protein filmUsing formaldehyde cross-linker

Creep compliance of a wheat protein film (determination of retardation

time and free dashpot viscosity in the Jefferys model)

01 ))exp(1(

tt

JJret

Where J is the strain, J1 is the retarded compliance (Pa-1); λret=µ1/G1 is retardation time (s); µ0 is the free dashpot viscosity (Pa s); t is the time.

The recovery of the compliance is following the equation (t >t1):

)exp( 11

ret

ttJJ

Where t1 is the time the stress was released.

Page 16: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

4. Simulink examples

Creep compliance of a wheat protein film

Parameters: J1 = a = 0.38 Mpa-1; λret = b = 510.6 s; µ0 = c = 260800 Mpa s

Simulink model

01 ))exp(1(

tt

JJret

)exp( 11

ret

ttJJ

Page 17: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

4. Simulink examples

Creep compliance of a wheat protein film

Simulation result

Page 18: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

4. Simulink example

Agitation

Heater

Aeration

Products

Biomass

Heater

Ethanol

Biomass

Regular fermenter Ethanol fermenter

Fermentation system

Page 19: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

4. Simulink examples

Ethanol production kinetics

xp

p

sK

sxr

dt

dx

Sx

)1(max

max

xmp

p

sK

sYxmYr

dt

dCP

SPXPPXP

P ])1([][max

max

xmp

p

sKY

sxm

Yr

dt

dCS

SXSS

XSS

S ])1()(

[][max

max

),( psf )1(max

max

p

p

sK

s

S

Where: η is the toxic power, Pmax is the maximum product concentration at which the growth is completely inhibited

Growth kinetics

Substance consumption

Product production

Page 20: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

a. Using blocks to construct the model

4. Simulink examples

Using S-function to construct the model (you may also writing the programs for simulink function)

Page 21: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Special help session Special help session November 28 (Monday, November 28 (Monday,

6~9pm)6~9pm)

I will be in Sever 201 I will be in Sever 201 computer Lab to answer computer Lab to answer your modeling questions.your modeling questions.

04/18/23 21

Page 22: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Introduction to Optimization

The maximizing or minimizing of a given function subject to some type of constraints.

Make your processes as effective as possible

Page 23: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

To find the minimum of a multidimensional function in [-1.2, 1]:

21

2212 )1()(100)( xxxxf

The plot of the function can be generated by the following code:

[x, y]=meshgrid ([-2:0.1:2]);z=100*(y-x.^2).^2+(1-x).^2;mesh(x, y, z);grid on

The function of ex2c is written as follow:function f=ex2c(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^2;

The function of ex2cMinimum is written as follow:function ex2cMinimumfminsearch(@ex2c, [-1.2,1]);

Example 1 (fminsearch)Example 1 (fminsearch)

c) Introduction to Optimization

clearclc [x, y]=meshgrid ([-2:0.1:2]);z=100*(y-x.^2).^2+(1-x).^2;mesh(x, y, z);grid on a=fminsearch(@ex2c, [-1.2,1]);x=a(1)y=a(2)z=100*(y-x.^2).^2+(1-x).^2

Page 24: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

%===========================================% Michaelis & Menten Model Fit. % File name "SimpleMMplot.m".%=========================================== clear clf global S V;% experiemntal dataS=[0 1 2 3 4 5 6 7 8];V=[0 0.08 0.15 0.18 0.2 0.21 0.215 0.216 0.216];v0=[1; 1];a=fminsearch('two_var',v0); %least square errorsKm=a(1);Vmax=a(2);Vmodel=Vmax*S./(Km+S);plot(S,V,'ro', S, Vmodel)xlabel('Concentrations')ylabel('rate')legend('Data','Predict')

function sumsqe= two_var(aa)global S V;Km =aa(1); Vmax =aa(2); Vmodel=Vmax*S./(Km+S);err=V-Vmodel; err2=err.*err; sumsqe=sum(err2);return

SK

SVV

m max

Using fmin for curve fitting

Example 2Example 2

Page 25: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Example 3Example 3

Find values of Find values of xx that minimize that minimize

starting at the point x = [10; 10; 10] and starting at the point x = [10; 10; 10] and subject to the constraints subject to the constraints

X = FMINCON(FUN, X0, A, B, Aeq, Beq, LB, UB) minimizes FUN subject to the linear equalities Aeq*X = Beq as well as A*X <= B. (Set A=[] and B=[] if no inequalities exist.)

Page 26: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

%file name example1clc;close all;clear all;int_guess=[10;10;10];% INITIAL GUESS FOR U'SA=[-1 -2 -2;1 2 2]; % equality constraints B=[0 72];[u]=fmincon(@eg_1, int_guess, A, B) % CALL FOR OPTIMIZER

Use fmincon for optimization

FMINCON attempts to solve problems of the form: min F(X) subject to: A*X <= B, Aeq*X = Beq (linear constraints) C(X) <= 0, Ceq(X) = 0 (nonlinear constraints) LB <= X <= UB (bounds)

%file name eg_1.mfunction [err]=eg_1(u)x1=u(1);x2=u(2);x3=u(3);err=-x1*x2*x3;

Page 27: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Example 4 (dynamic optimization)Example 4 (dynamic optimization)

Consider the batch reactor with following reactionConsider the batch reactor with following reactionAA BB CC

Find the temperature, at which the product B is maximumFind the temperature, at which the product B is maximum

Mathematical Representation of the system is as :Mathematical Representation of the system is as :

Page 28: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

clc;close all;clear all;warning offint_guess=300;% INITIAL GUESS FOR U'SLB=298; % LOWER BOUND OF UUB=398;% UPPER BOUND ON U[u,FVAL]=fmincon(@reactor_problem,int_guess,[],[],[],[],LB,UB,[]); % CALL FOR OPTIMIZER PROBABLY NOT TO CHANGE BE USER

[err]=reactor_problem(u);load data_for_systemplot(t,Y(:,1),'k')hold onplot(t,Y(:,2),'m')legend('opt c_A','opt c_B')u

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

opt cA

opt cB

T=335.3244FVAL = -0.6058

Page 29: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

function [err]=reactor_problem(u)A=[1 0]; %initial condition[t,Y]=ode15s(@reactor_ODE,[0 1], A,[],u); %tspan=1err= - Y(end,2); %make the maximum Bsave data_for_system t Y %just for plotting

function [YPRIME]=reactor_ODE(t,x,u)YPRIME=zeros(2,1);T=u;k1=4000*exp(-2500/T);k2=620000*exp(-5000/T);YPRIME(1)=-k1*(x(1))^2;YPRIME(2)=(k1*x(1)^2)-k2*x(2);

Maximize B

ODE calculation

Page 30: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Using MATLAB for solving more complicated dynamic models

(Optional)

04/18/23 30

Page 31: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

For example, For example, solve complicated dynamic model in the bioprocess

Many biological systems are dynamic and heterogeneous! Therefore, structured and segregated

models have to be used.

Page 32: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Definitions

• Ordinary Differential Equation (ODE): The dependentvariable is a function of only one independent variable.• Partial Differential Equation (PDE): The dependentvariable is a function of more than one dependent variable.

•Boundary-value problems are those where space conditions are not known; Initial-value problems are those dynamic condition are not known.

Page 33: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Finite-Difference Methods are often used to solve boundary-value problems. In these techniques, finite differences are substituted for the derivatives in the original equation, transforming a linear differential equation into a set of simultaneous algebraic equations.

Boundary-value problems

• Dirichlet boundary conditions are those where a fixed value of a variable is known at a particular location.• Neumann boundary conditions are those where a derivative is known at a particular location.

Page 34: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Final equation

Page 35: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

04/18/23 35

Marine pollution by oil compounds

Oil transport and degradation in the porous sediment

Page 36: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

How to solve PDEs using the finite difference method?

a: one injection unit

bPss

bbbb

Ps

mb

CKK

Cr

Z

C

r

C

rr

C

K

D

t

C

])1[(]

1[

)1(max

2

2

2

2

Z

jijiji

h

CC

Z

C

21,1,,

r

jijiji

h

CC

r

C

2,1,1,

2

,1,,1

2

,2 2

r

jijijiji

h

CCC

r

C

2

1,,1,

2

,2 2

Z

jijijiji

h

CCC

Z

C

),,( ,,

jiji

CZrft

C

Find the time and space dependent change

of Ci,j

The change of Contaminant concentrations in the porous environment

Page 37: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

04/18/23

function ydot=rhs2d2(t, y)global dx D ii jj Km Vmax for j=1:jj for i=1:ii vv=vv+1; yy(i,j) = y(vv); end end for j=2:jj-1 for i=2:ii-1 R=-Vmax*yy(i,j)/(Km+yy(i,j)); Dffu1=(yy(i+1,j)-2*yy(i,j)+yy(i-1,j))/(dx*dx); Dffu2=(1/(dx*(i-1)))*(yy(i+1,j)-yy(i-1,j))/2/dx; Dffu3=(yy(i,j+1)-2*yy(i,j)+yy(i,j-1))/(dx*dx); dot(i,j) = D*(Dffu1+Dffu2+Dffu3)+R; bb = ii*(j-1)+i; ydot(bb) = dot(i,j); endend

ydot=ydot';

Sample codes for PDE problem.

You can change PDE problem to many mini ODE problem, then you solve them at the same time.

Page 38: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Solving Reaction Engineering Problems Solving Reaction Engineering Problems with MATLABwith MATLAB

By Lian HeBy Lian He

Solve PDE dynamic equations and Solve PDE dynamic equations and nonlinear equilibrium equations nonlinear equilibrium equations

Page 39: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Example 1 Example 1 Porous CatalystPorous CatalystThe spherical catalysts are exposed to The spherical catalysts are exposed to

reactants at the initial time point. Given reactants at the initial time point. Given the information about the diffusion the information about the diffusion coefficient De, reaction rate, etc., we want coefficient De, reaction rate, etc., we want to know the reactant concentration to know the reactant concentration profile. (We assume that the reactant profile. (We assume that the reactant concentration in the catalyst is only a concentration in the catalyst is only a function of time and distance to the function of time and distance to the center for simplicity. )center for simplicity. )

R

Page 40: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

SolutionSolution

Dimensionless formDimensionless form

• PDE

Thiele Module

Initial conditionu(0, x)=0Boundary conditionsu(t , 1)=Ssurf

Page 41: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

MATLAB tool: pdepeMATLAB tool: pdepe SyntaxSyntax

sol = pdepe(m, @pdefun, @icfun, @bcfun, xmesh, tspan, options)sol = pdepe(m, @pdefun, @icfun, @bcfun, xmesh, tspan, options)

function [pl, ql, pr, qr]=pdebound(xl, ul, xr, ur, t)pr=ur-1;qr=0;pl=0;ql=1;end

function u0=icfun(x)u0=0;end

function [c, f, s] = pdefun(x, t, u, DuDx)c=1;f=φ^(-2)*DuDx;s=-u/(1+u/beta);end

Page 42: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

ResultsResults

Page 43: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

clc;clear all; x=0:0.02:1; %radius ranget=0:0.04:8; %timespanu=pdepe(2,@pdefun,@icfun,@bcfun,x,t);%m=2 %Show the concentration profile as a function of time for k=1:length(t) plot(x,u(k,:),'linewidth',2); xlabel('distance from the center'); ylabel('substrate concentration'); pause(.2)end figure(2)%3D plotmesh(x,t,u);xlabel('x');ylabel('t');zlabel('u');axis([0 1 0 8 0 1]);

function [pl, ql, pr, qr]=bcfun(xl, ul, xr, ur, t)pr=ur-1;qr=0;pl=0;ql=1;end

function u0=icfun(x)u0=0;end

function[c,f,s]=pdefun(x,t,u,DuDx)De=3*10^-4;Ss=1*10^-4;Km=0.1*Ss;R=0.001;umax=0.5;Mt=R*sqrt(umax/Km/De);beta=Km/Ss; c=1;f=Mt^(-2)*DuDx;s=-u/(1+u/beta);end

Main scriptThree Functions

Page 44: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Example 2Example 2

Page 45: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

SolutionSolution

Species nj0 nj

H2O 1 1-2X1

CO2 0 X1-X2

CO 0 2X2

CH4 0 X3

H2 0 2(X1-X3)

sum 1 1+X1+X2-X3

# Reaction Molar Extent

1 C+2H2O=CO2+2H2 X1

2 C+CO2=2CO X2

3 C+2H2=CH4 X3

Page 46: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

Nonlinear equationsNonlinear equations

You can use MATLAB tool-fsolve to solve the problem

Page 47: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

clear all;clc; %initial guess of molar extentx0=[0.3 0.3 0.3]; %set the intial valuesT=600; %creat different vectors for recording temperature, molar extent and molar%fractiont=zeros(101,1); X=zeros(101,3); yH2O=zeros(101,1); yCO2=zeros(101,1);yCO=zeros(101,1); yCH4=zeros(101,1); yH2=zeros(101,1); for i=1:101 %find the solution [x,fval] = fsolve(@nlfunc,x0,[],T); %record the results t(i)=T; X(i,:)=x; %caculate the molar fraction of each species yH2O(i)=(1-2*x(1))/(1+x(1)+x(2)-x(3)); yCO2(i)=(x(1)-x(2))/(1+x(1)+x(2)-x(3)); yCO(i)=2*x(2)/(1+x(1)+x(2)-x(3)); yCH4(i)=x(3)/(1+x(1)+x(2)-x(3)); yH2(i)=2*(x(1)-x(3))/(1+x(1)+x(2)-x(3)); %change values for the next loops T=T+10;end %plottingsubplot(2,2,[1 3]);plot(t,X(:,1),'o',t,X(:,2),'*',t,X(:,3),'.');legend('C+H_2O=>CO_2+2H_2','C+CO_2=>2CO','C+2H_2=>CH_4');xlabel('Temperature (K)');ylabel('molar extent'); axis([600 1600 0 0.6]); subplot(2,2,[2 4]);plot(t,yH2O,'o',t,yCO2,'-o',t,yCO,'.',t,yCH4,'*',t,yH2,'^');legend('H_2O','CO_2','CO','CH_4','H_2');xlabel('Temperature (K)');ylabel('molar fraction');axis([600 1600 0 0.6]);

Main script

Page 48: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

function F = nlfunc(x,T) %coefficient valuesK1=9.73*10^(-12)*exp(-10835/T+36.36);K2=9.92*10^(-22)*exp(-20740/T+69.60);K3=8.00*10^8*exp(8973/T-30.11); %three column vectorsF=zeros(1,3); %functionsF(1)=4*(x(1)-x(3))^2*(x(1)-x(2))-K1*(1-2*x(1))^2*(1+x(1)+x(2)-x(3));F(2)=4*x(2)^2-K2*(x(1)-x(2))*(1+x(1)+x(2)-x(3));F(3)=x(3)*(1+x(1)+x(2)-x(3))-4*K3*(x(1)-x(3))^2; end

Fsolve function to solve nonlinear Fsolve function to solve nonlinear equationequation

Page 49: 4/12/2015 1 Example by Xueyang Feng: Nov 16th Parameter fitting for ODEs using fmincon function X = FMINCON(FUN,X0,A,B,Aeq,Beq) minimizes FUN subject to.

ResultsResults