Curve fitting thin film reflectance to extract optical parameters

6 次查看(过去 30 天)
I am trying to fit experimental Reflectance data to Lorentz oscillator model but the fit is not matching the expirement data. Can you please suggest what I am doing wrong
The expression for relectivity from a thin film of thickness L is
where , and n are reflective index of incoming medium (air ), substrate(SiO2) and the thin film respectively.
where λ=532 nm is wavelength of the Laser
no=1;
and is complex reflective index.
The reflectivity is then
I am modelling the complex dielectric constant ϵ with Lorentz oscillators which gives
where , and are fitting parameter. The complex reflective index is .
I have experimental R vs E (energy in eV). I want to fit this experimental data to the above expression and find the fitting parameters.
%Resonant energy from experiment
E0=1.7226;
%Initial guess of fitting parameter
wp=0.707;
g=11.40*10^(-3);
e=10.8;
p0=[e wp g];
%Fitting of the experiment data
st=p0
opts = optimoptions(@lsqnonlin,'DiffMaxChange', 0.1,'FinDiffType', 'central', 'Display','off','MaxFunEvals',2E7,'TolFun',1E-18,'TolX',1E-300,'MaxIter',4E3);
%opts = optimoptions(@lsqnonlin);
opts.Algorithm = 'levenberg-marquardt'
x0 = st; % arbitrary initial guess
lb = 0.0*ones(size(st));
[p_estimated,resnorm,residuals,exitflag,output] = lsqnonlin(@(p)reflectance(I,E0,p) , x0, lb,[], opts)
%Function of the reflectance
function R = reflectance(I,E0,p)
ns=1.732; %reflective index of SiO2
E=linspace(min(I(:,1)), max(I(:,1)),length(I(:,1)));
E=E';
lambda=1240./E;
L=2*pi*0.6/(lambda);
I1=I(:,2);
e=p(1)+p(2).^2 ./(E0.^2-E.^2-1i.*E.*p(3));
n1=sqrt(e);
d=L*n1;
r=(n1.*(1-ns).*cos(d)+1i*(ns-n1.^2).*sin(d))./ (n1.*(1+ns).*cos(d)+1i.*(ns+n1.^2).*sin(d));
%r=(1-e)./((1+e)+2*1i.*sqrt(e).*cot(L.*sqrt(e)));
%r=(1-e)./(1+e);
R=abs(r).^2-I(:,2);
end
Below shown are plots of experiment data and data after fitting.
I have attached the experimental data. First column is energy in eV and second is reflectance.

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Least Squares 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by