cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Need to share some code when posting a question or reply? Make sure to use the "Insert code sample" menu option. Learn more! X

How to re-code a Rkadapt() optimization problem using Odesolve block

FanCG
1-Visitor

How to re-code a Rkadapt() optimization problem using Odesolve block

in the book chemical kinetics with mathcad and maple, Figure 4.22 illustrates a very useful and interesting method to answer a reversible kinetic question,

 

after reading this example, I wanna rewrite it, for I think that Odesolve block is easier to read than Rkadapt() function. But during the recoding , I found that I

 

must change k to k(t), but this would not bring too much trouble during solving the ODEs. the problem arised during optimization, see the figure

 

%E6%8D%95%E8%8E%B7.PNG

ACCEPTED SOLUTION

Accepted Solutions
Werner_E
25-Diamond I
(To:FanCG)

Is it something like this you are after?

I have changed your single scalars ki to a vector for compactness.

ODEsolve2.png

View solution in original post

8 REPLIES 8
Werner_E
25-Diamond I
(To:FanCG)

Why did you change the constants ki to be constant functions?

ODE2.png

FanCG
1-Visitor
(To:Werner_E)

because it is said in the book that four ODEs are needed to enclose the ODEs on C(t) and D(t),

then I just did this according to the instructions. what I posted above in my thread is just a part of optimization for ki (i=1,2,3,4).

what I wanna do is to use ODEsolve block instead of RKadapt in the original file (as I attached below, Fig4.22 of the book I mentioned above, )

fig4.22

Fig_4_22_Inverse_RkadaptMinerr.gif

Werner_E
25-Diamond I
(To:FanCG)

So you can't expect a decent match with your datapoints because you never use them!

Whats wrong with the usage of Rkadapt? It returns (using 10 steps) exactly the 11 element vectors needed to compare with the datavector to fit which is done. If you use a solve block with odesolve you get a function and would have to construct these vectors yourself.

I don't think that you can find the values of your ki in an ODE solve block.

The construction in the original sheet makes sense: First define a function which solves the ODEs using the values of lki or ki as parameter. Then use this function in a Minerr block to find the optimal constants lki/ki. At last solve the ODE one last time using the just found constants but with more precision (more steps).

You can easily rewrite the last RkAdapt as an odesolve-block.

You could rewrite the first one, too, but it would be cumbersome to check against the original data points.

I don't think you have to do it just like it was done with Rkadapt. Odesolve can parameterize the solution without the parameters being one of the dependent variables. Rkadapt can only parameterize the initial conditions, so the parameters have to be passed as the initial values of dependent variables that do not change. Thus, your parameters can be independent of time in the Odesolve equations.

yes, u are right. I must compose the vector by myself, ODEsolve cannnot do it for me. thank you very much!

I had a very inflexible understanding for that example in the book, I will try to use the method mentioned in Fig 4.23

Werner_E
25-Diamond I
(To:FanCG)

Is it something like this you are after?

I have changed your single scalars ki to a vector for compactness.

ODEsolve2.png

FanCG
1-Visitor
(To:Werner_E)

yes, this is exactly what I want.

and I have recoded it in a similar way, but the calculation is much slower than that for the original example(maybe my calculations include too many steps), and my k4 is different from the old one.

your answer seems more close to what I want than that re-coded by myself. I will study it, thx.

following is my codes (mathcad 14):

捕获.PNG

Werner_E
25-Diamond I
(To:FanCG)

and I have recoded it in a similar way, but the calculation is much slower than that for the original example(maybe my calculations include too many steps),

Yes, the 10000 steps slow down things considerably. Thats the reason for the additional steps parameter in my sheet.

your answer seems more close to what I want than that re-coded by myself. I will study it,

Your code isn't that much different from mine. Differences are only that I changed the ki to a vector, used the vectorization directly without an extra function and used much less steps for ODEsolve in the Minerr block.

As for the different values - it seems that k4 (k3 in my sheet) has not much influence in the Minerr process as long as its smaller than about e^(-100).

I changed my sheet so the variables ki now ressemble the lnki of the original sheet, but still the same effect.

If you play around with the original sheet you will see, that its quite sensible witch respect to the guess values, too.

Announcements

Top Tags