Filter löschen
Filter löschen

How to determine kinetic parameters using nonlinear least square algorithm?

3 Ansichten (letzte 30 Tage)
Zitro
Zitro am 23 Apr. 2020
Beantwortet: Raunak Gupta am 29 Apr. 2020
Hello,
First things first, I am an absolute beginner in Matlab, so this problem could be easy to solve.
The Problem:
I have a data curve that does provide me with the conversion of an reactant at a given temperature T in my reactor system. Using this data, I read you can determine the kinetic parameters A(1) to A(6) by using a nonlinear least square algorithm. I decided to give it a try, but I don't know how to write a code to solve this problem. Therefore i need your help.
The kinetik equations are:
(1/p0)*dp/dt = -r(T)*(1/p0)
r(T) = p*A(1)*A(2)*A(3)*exp(A(4)/(R*T))*exp(A(5)/(R*T))*exp(A(6)/(R*T)) / [(1+p*A(2)*exp(A(5)/(R*T)))*(1+A(3)*exp(A(6)/(R*T)))]
Due to the obtained data points i know the conversion (equals (1/p0)*delta_p) at a given temperature T. I also know the parameter R (=8.314), the initial partial pressure of the reactant p0 =0.01 and the residence time t0 in the reactor to integrate (let's assume t0 =1.2 seconds). The reporting paper is: DOI 10.1007/s13762-016-0961-z
To make things easier, you can copy this matrix with some exemplary results for your calculations. In the first column, you will find the temperature, and in the second column you will find the corresponding conversion of the reactant.
Data = [29.5 0.0000; 77.3 0.0000; 115.9 0.0000; 150.0 0.0033; 179.5 0.0099;
206.8 0.0232; 222.6 0.0430; 238.5 0.0728; 252.0 0.1325; 267.7 0.2185;
283.3 0.3477; 298.9 0.4669; 312.3 0.5695; 328.0 0.6589; 341.5 0.7285;
357.3 0.7947; 373.1 0.8377; 388.9 0.8775; 402.5 0.9073; 418.3 0.9338;
431.9 0.9503; 450.1 0.9735; 463.7 0.9801; 477.3 0.9901;
493.2 0.9934];

Antworten (1)

Raunak Gupta
Raunak Gupta am 29 Apr. 2020
Hi,
You may look for lsqnonlin as a potential function for solving the nonlinear least square problem as here you have two know data points r(T) and T. You need to set the objective function as the difference between the r(T) and the parametrized version of r(T) which have six unknowns you want to find.
Since the conversion is given as (1/p0)*delta_p) you can convert it to represent r(T). The optimization algorithm needs to start with an initial point, so you need to specify 6 element vector corresponding to starting point for each parameter. Also, if the parameters can be any real number you may want to use fminunc which is similar but used for unconstrained optimization. Otherwise if you know the range in which the parameters might lie you can give lower bound and upper bound in lsqnonlin.
You may take a look at Nonlinear Least Squares (Curve Fitting) for exploring about optimization workflows.

Kategorien

Mehr zu Systems of Nonlinear Equations finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by