How can I minimize the difference between data from PDE script and experimental data set?

I have built a script to solve PDE of diffusion problem. I want to obtain some constants (D, k, and k_ads) by comparing the concentration profile from the experiment with the one from PDE. The concentration profile is in 1x10 array. Suppose I can make an objective function by (C_simulation-C_exp)^2, so how can I minimize it by automatically change the constants as can be done in Excel solver add-in? For clearer perception, I gave the script attached. C_simulation is function of Cp at x=0 at any t (-dC/dt=k*(C(t)-Cp(x=0,t)-> I integrate it first and substitute C(t) as function of Cp and C(t=0)). At this point, I confused how to build C_simulation array (to locate the Cp at x=0,any t and then perform optimization to get k_ads, K, and D. Thank you for the suggestions.

Réponses (2)

You can use fminsearch, or, if you have an Optimization Toolbox™ license, lsqcurvefit. See Nonlinear Data-Fitting.
Alan Weiss
MATLAB mathematical toolbox documentation

1 commentaire

Dear Alan, Thank you for the reference. However, in my problem, only k is the explicitly related to the C and the others (D and k_ads) are implicit in the PDE. I do not know how to relate it into an explicit equation as showed in the example.
Thank you.
Regards, Hardy

Connectez-vous pour commenter.

Here is an example for parameter fitting in an ODE:
https://de.mathworks.com/matlabcentral/answers/43439-monod-kinetics-and-curve-fitting
The procedure for a PDE is the same.
Best wishes
Torsten.

1 commentaire

Dear Torsten,
Thank you for your help. However, the experimental data I got is concentration in the liquid (C) but the PDE is about concentration in the pores (Cp). So, I cannot directly fit it after the PDE is solved.
Regards, Hardy

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by