Curve fitting thin film reflectance to extract optical parameters
18 次查看(过去 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.



no=1;
and
is complex reflective index.

The reflectivity is then 

I am modelling the complex dielectric constant ϵ with Lorentz oscillators which gives





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 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear and Nonlinear Regression 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!