lsqcurvefit help and curve fitting

Dear Community,
I am trying to fit my mathematical model to the data I was able to retrieve. Currently my graph is showing this:
And followed by this prompt:
Do you know why the system isnt matching the data completely? I applied this to another case and it was able to work but my Dab was 2 orders of magnitude lower
Any help would be greatly appreciated!
-Daniel

3 Comments

Torsten
Torsten on 11 Apr 2023
Edited: Torsten on 11 Apr 2023
How should anybody be able to answer this without knowing your data and your model function ?
Hi Torsten,
You are completely right. Sorry about that. Here is the attached data with my code. If there is anything else I could do to help with this please let me know and I will attend to it ASAP! Thank you!
%% Fitting experimental data to mathematical model %%
% Dab is found to be around 8.124E-8 cm^2/s (Source: Preparation & characterization
% of chitosan membrane for the permeation of 5FU - Jen Ming Yang)
clear all
%Calling data from excel
filename = 'Data Sheet.xlsx'; % Call the file we are using
sheet = 'Run 1'; % Call the sheet we are using
xlRange = 'A2:A12'; % Call time values in seconds
x2Range = 'B2:B12'; % Call concentration in mg/mL
t = xlsread(filename, sheet, xlRange); % t = xlsread(filename, sheet, xlRange); % Reads x-axis specified with above variables
c = xlsread(filename,sheet, x2Range); % c = xlsread(filename, sheet, x2Range); % Reads y-axis specified with above variables
figure
plot(t,c,'-')
hold on
x0 = 0.00000000001;
optimoptions(@lsqnonlin,'StepTolerance',1e-12);
Dab = lsqcurvefit(@f, x0, t, c) % fitting Dab to function(@f) defined below
Local minimum possible. lsqcurvefit stopped because the size of the current step is less than the value of the step size tolerance.
Dab = 3.4381e-07
% to data t & c starting at 0 by using x0
% and will be in units (cm^2/s)
t = [t;(6000:1000:50000).'];
plot(t,f(Dab,t),'--')
hold off
grid
title('Release')
%legend('Experimental','Theoretical')
xlabel('Time (sec)')
ylabel('Concentration (mg/mL)')
function Cal = f(Dab,t)
n = 0:250; % Number of sumations
RE = 0.10; % Release Efficieny for Chitosan is 6% so report value might be overestimated
Co = 187.*(RE); % Initial concentration of drug inside patch (mg/cm^3) (11.5 matches data!!!!)
L = 0.11; % Distance from middle of patch to surface (cm)
Vp = 1*1*2*L; % Volume of patch (cm^3)
Vl = 40; % Volume of liquid reservoir (cm^3)
%Belows is the average concentration profile <Ca>
lambdan = (((2.*n+1).*pi)./(2.*L)) ;
sum_parts = (((-1).^n)./(lambdan.^2)) .* exp(-(lambdan.^2).*Dab.*t) .* sin(lambdan.*L) ; %Summation
Cal = ((Co.*Vp)./Vl).*(1-(2./(L.^2)).*sum(sum_parts,2)); %Final Function
end
Also, Here is the expression i am fitting to the data
Do you see the reason for your problem in the graphics above ? The end concentration you assume is much too high - it should be similar to the asymptotic value to which your measurement data converge (around 0.032).

Sign in to comment.

Answers (0)

Categories

Asked:

on 10 Apr 2023

Commented:

on 11 Apr 2023

Community Treasure Hunt

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

Start Hunting!