Optimization/minimization/curve fitting with a non-linear model and imported data

Which method can be used to optimize parameters of a model, to fit experimental data?

Concrete: Following parameters and calculation model:

Fixed parameters:

P0 = 101325;
Pr = 0.71;
η = 1.838*10^-5;
κ = 1.4;
ρ0 = 1.19;
c0 = (κ*P0/ρ0)^0.5;
Z0 = ρ0*c0;
f = Range[400, 10000];
ω = 2*Pi*f;
d := 15*10^-3;


Adjustable parameters. Accuracy should be 0.01, except σ (0.1). Range/Boundary conditions are in brackets.

ϕ -> [0.5 - 1];
σ -> [5000, 140000];
α -> [1, 4];
λ -> [1*10^-6 , 1*10^-4];
λ' -> [1*10^-6 , 1*10^-4];
kop -> [1*10^-11 , 1*10^-9];


Calculation model with formulas:

H = (λ^2*σ^2*ϕ^2)/(4*α^2*η*ρ0);
g = Sqrt[1 + (I*ω)/H];
nup = η/(Pr*ρ0);
Mp = (8*kop)/(λ^2*ϕ);
wtl = (nup*ϕ)/kop;
gp = Sqrt[1 + (I*Mp*ω)/(2*wtl)];
Reff = α*(1 + (g*(σ*ϕ))/(I*α*ρ0*ω));
Keff = κ/(κ - (κ - 1)/(1 - (I*gp*wtl)/ω));
kw = ω*Sqrt[Reff/Keff];
Zc = Sqrt[Reff*Keff];
Zs = -I*Zc*Cot[kw*d];
r = (Zs - 1)/(Zs + 1);
(*Target value a (absorption over frequency f *)
a = 1 - Abs[r]^2;


I want to import data like this: (Must the frequency steps be the same as the setps of the range of defined variable f?)

My target is now, to get the adjustable parameters for the best fit to a given plot/imported-data.

Please give concrete answers. Best would be a concrete solution inculdung an optimization model with implemented boundaries. Explanation or suggestions are also welcome.

• Have you taken a look atFit, FindFit and NonlinearModelFit? – Mauricio Fernández Aug 11 '17 at 10:57
• Yes i tried, see edit of the question. – JoeK Aug 13 '17 at 12:02
• Rather than edit the question you opened up a duplicate question (although the duplicate is more informative). So you might want to consider editing this question to look like the newest question so that the good comment by @MauricioLobos that you've used doesn't get lost. Also, based on your newer question, I don't think there's much additional advice we can give without the data (or a subset of the data). And it might be that your function just doesn't bend the same way as the data. – JimB Aug 13 '17 at 21:23