isqnonlin: compute part of objective function outside of matlab

9 vues (au cours des 30 derniers jours)
SA-W
SA-W le 11 Août 2022
Commenté : SA-W le 17 Oct 2022
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 commentaires
Torsten
Torsten le 12 Août 2022
And did you already test the data transfer between your PDE solver and MATLAB ?
SA-W
SA-W le 12 Août 2022
I can transfer data between my PDE solver and MATLAB, that is no problem.

Connectez-vous pour commenter.

Réponse acceptée

Torsten
Torsten le 12 Août 2022
Modifié(e) : Torsten le 12 Août 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 commentaires
SA-W
SA-W le 16 Sep 2022
"IMO, sorry to tell you directly but it is not serious to work with J with condition number of 1e12, exitflag = 3 and gradient test fail. You must to make those numerical obstacles going away before conclude anything that is trustworty."
The gradient check does not fail anymore. Also, for example, a start vector
p0 = [100000;50000;0;50000;100000]
converges to the true exact solution
p = [21844;5183;0;4844;18939]
. The associated exitflag = 3, although it is the true solution (synthetic data).
You are absolutely right with the bad condition number of J. I am wondering anyway how such a Jacobian results in the correct solution?
I am not sure if I can scale my parameters, because these are material parameters and my pde solver does not converge at all if I change the order of magnitude of them somehow. Is there a way to scale the COMPUTED Jacobian to reduce the condition number or do I have to compute J with scaled parameters?
SA-W
SA-W le 17 Oct 2022
Sorry that I come back on this again. But I would appreciate your feedback in this regard:
If the parameters at some point during optimization do not change anymore, what might be useful to check for underlying reasons?

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by