isqnonlin: compute part of objective function outside of matlab

4 views (last 30 days)
I am solving a partial differential equation depending on some design variables (material parameters). I want to fit the material parameters to the vector of experimental data y using matlabs function isqnonlin.
I am solving the PDE for given material parameters with an external software; the solution vector thus obtained is denoted as s. What I want to minimize is the squared difference between s and y in the l2-norm by using the algorithm implemented in isqnonlin.
Given that I do not compute the PDE solution s in matlab itself, is it possible to use isqnonlin?
  2 Comments
Simon Wiesheier
Simon Wiesheier on 12 Aug 2022
I can transfer data between my PDE solver and MATLAB, that is no problem.

Sign in to comment.

Accepted Answer

Torsten
Torsten on 12 Aug 2022
Edited: Torsten on 12 Aug 2022
Then call "lsqnonlin" as
p0 = ...; % initial guess for the vector of material parameters
sol = lsqnonlin(@(p)fun(p,y),p0)
and write a function "fun" as
function res = fun(p,y)
s = result_from_your_PDE_solver_for_the_vector_of_material_parameters_p_corresponding_to_y(p)
res = s - y;
end
By the way:
The name of the MATLAB function is lsqnonlin (least-squares solver for nonlinear problems), not isqnonlin.
  134 Comments