Revising Levenberg Marquardt Method

Revising Levenberg Marquardt Method - Revising the Levenberg Marquardt Method with finite differences - Messages

#1 Posted: 12/21/2019 12:50:23 AM
CBG

CBG

77 likes in 312 posts.

Group: User

Reviewing the Levenberg Marquardt Method with a Jacobian matrix for finite differences,
solving an example taken from the website:
http://support.ptc.com/help/mathcad/en/index.html#page/PTC_Mathcad_Help/example_using_minerr_for_nonlinear_least_squares_fitting.htm .

LMM revisits.png

Algorithm_Levenberg_M_with_DF_SS7251.sm (210 KiB) downloaded 87 time(s).

Algorithm_Levenberg_M_with_DF_SS7251.pdf (569 KiB) downloaded 86 time(s).


Best Regards

Carlos
2 users liked this post
frapuano 12/21/2019 4:42:00 AM, NDTM Amarasekera 12/27/2019 7:41:00 AM
#2 Posted: 12/21/2019 8:34:27 AM
Martin Kraska

Martin Kraska

1222 likes in 2150 posts.

Group: Moderator

Solution using the Maxima package lsquares via the interface functions of the Maxima plugin

fit1.png
fit1.sm (29 KiB) downloaded 86 time(s).
Martin Kraska Pre-configured portable distribution of SMath Studio: https://en.smath.info/wiki/SMath%20with%20Plugins.ashx
2 users liked this post
frapuano 12/21/2019 3:16:00 PM, Radovan Omorjan 12/21/2019 10:36:00 AM
#3 Posted: 12/21/2019 1:27:24 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Thanks: Carlos, Martin.
SS 6179 does not complain but still pedaling in 10 min ???

1. in Mathcad [8 Pro ... 11] type ERR= after Minerr
ERR is undocumented = SSD [discovered by Paul W.]
2. alternate to corr, SSD sometimes meaningless [Viod ratio, Verhulst].
3. Often, the best fit is Conjugate Gradient.

Jean

Genfit VoidRatio.sm (65 KiB) downloaded 64 time(s).
Genfit Verhulst.sm (56 KiB) downloaded 63 time(s).
Genfit Weibull.sm (54 KiB) downloaded 70 time(s).
#4 Posted: 12/24/2019 3:13:34 AM
CBG

CBG

77 likes in 312 posts.

Group: User

Thanks, Martin

Hello Jean:

I tried to run the algorithm of Levenberg Marquardt, in the version of SS6179,
but it inevitably fails, giving an incorrect solution.

It seems that the error could be in some operation where a single value vector
is produced. Could you take a look to see if you can doctorate ?.

I post again the version of the algorithm in SS7251 with some minor changes.

LMM revisits_R1.png

Algorithm_Levenberg_M_with_DF_SS6179.sm (513 KiB) downloaded 65 time(s).

Algorithm_Levenberg_M_with_DF_SS7251_R1.sm (209 KiB) downloaded 61 time(s).


Best Regards

Carlos
#5 Posted: 12/26/2019 12:11:47 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

It seems that the error could be in some operation where a single value vector
is produced. Could you take a look to see if you can doctorate ?.


Helo Carlos,
I deleted all previous postings of no more interest.
I found no way to iterate LM ? Otherwise, easy to initialize
from the al_nleqsolve as suggested in the last part of the attached.
In Mathcad, LM was found hyper robust to initialize,
but most of the times, better fit are concluded from CG.

The Weibull example is one of the easiest to fit.
Very many aren't so easy to fit from model(s), more reflexive.
Some model functions can't be fitted at all, unless from trial/error.
A great piece of work, to get familiarized in fitting session.
Thanks Carlos ... Jean

Genfit Weibull [LM_Iteretive CG] Copy.sm (436 KiB) downloaded 60 time(s).
#6 Posted: 12/26/2019 12:46:45 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

I found no way to iterate LM ? Otherwise, easy to initialize
from the al_nleqsolve as suggested in the last part of the attached.


... then like this:
refit from observing the bar deviation.

Genfit Weibull [LM,al_nleqsolve Companion].sm (102 KiB) downloaded 57 time(s).
#7 Posted: 12/26/2019 2:24:39 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

... then like this:
refit from observing the bar deviation.


... the fully tutored version.

Genfit Weibull [LM,al_nleqsolve Companion] Copy.sm (104 KiB) downloaded 71 time(s).
#8 Posted: 12/26/2019 11:29:57 PM
CBG

CBG

77 likes in 312 posts.

Group: User

Hello Jean

Thank you very much.

The question is: Why does the SS7251 version directly obtain the solution,
changing the values correctly of the β variable, while the SS6179 version does not,
and they have to be manually entered as new values of the vector of the assumed initial solution. ?

The algorithm is the same for the 2 versions of SmathStudio, so what is the difference if the
programming and decision definitions are supposed to work the same?

Best Regards

Carlos
#9 Posted: 12/27/2019 12:35:45 AM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

Thank you very much.

The question is: Why does the SS7251 version directly obtain the solution,
changing the values correctly of the β variable, while the SS6179 version does not,
and they have to be manually entered as new values of the vector of the assumed initial solution. ?

The algorithm is the same for the 2 versions of SmathStudio, so what is the difference if the
programming and decision definitions are supposed to work the same?


A most interesting observation !
SS 6179 may have to do with the conditional statement.
SS 6179 is "zero" tolerance. So, it may just navigate then end.
It could be SS 7251 conditional is coded more tolerant
Mathcad style and reaches convergence ? Watson, are you there ?
Cheers Carlos ... later on.
#10 Posted: 12/27/2019 3:09:57 AM
Alvaro Diaz Falconi

Alvaro Diaz Falconi

992 likes in 1675 posts.

Group: User

Wrote

Hello Jean

Thank you very much.

The question is: Why does the SS7251 version directly obtain the solution,
changing the values correctly of the β variable, while the SS6179 version does not,
and they have to be manually entered as new values of the vector of the assumed initial solution. ?

The algorithm is the same for the 2 versions of SmathStudio, so what is the difference if the
programming and decision definitions are supposed to work the same?

Best Regards

Carlos



Hola Carlos. Just check the code from the SS6179 version, in the while not(stop) loop, the line with A:=J^T*f is wrong, it must to be A:=J^T*J.

Best regards.
Alvaro.
1 users liked this post
NDTM Amarasekera 12/27/2019 7:17:00 AM
#11 Posted: 12/27/2019 3:47:32 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

Hola Carlos. Just check the code from the SS6179 version, in the while not(stop) loop, the line with A:=J^T*f is wrong, it must to be A:=J^T*J.


Thanks Alvaro ... doctored !
Weibull LM [0.1,1] 1 min
Weibull CG [0.1,1] 2.3 sec ... ½ max residual deviation
Carlos, your very original LM [Pharmacokinetics] works faster.
an it be compacted algo style ... tried not to avail ?

Hola ! Avaro, Carlos ... Jean

Genfit Weibull [LM_Iteretive CG].sm (437 KiB) downloaded 59 time(s).
Genfit [Algo Minimize(L-M)].sm (116 KiB) downloaded 68 time(s).
#12 Posted: 12/27/2019 8:37:54 PM
CBG

CBG

77 likes in 312 posts.

Group: User

Wrote



Hola Carlos. Just check the code from the SS6179 version, in the while not(stop) loop, the line with A:=J^T*f is wrong, it must to be A:=J^T*J.

Best regards.
Alvaro.



Hola Alvaro.

Muchas gracias por tu corrección.

Cuando copie y pegue directamente el codigo de SS7251 a SS6179 daba el error de
"Ecuacion demasiado larga para visualizarla" con un tiempo de ejecusion de mas de 7 minutos,
por lo que opté por copiar manualmente el codigo, pensando que las declaraciones eran interpretados erroneamente, y
fue cuando copie mal la formula.


Hello Alvaro.

Thank you very much for your correction.

When copying and pasting directly the code from SS7251 to SS6179 it gave the error of
"Equation too long to display" with an execution time of more than 7 minutes,
So I chose to manually copy the code, thinking that the statements were misinterpreted, and
It was when I copied the formula badly.

Muchas gracias tambien a Jean por su apoyo y sus comentarios tan acertados.


Best Regards

Carlos
#13 Posted: 12/27/2019 10:14:29 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

Muchas gracias tambien a Jean por su apoyo y sus comentarios tan acertados.


I Understand Carlos ...
Now, for your bed time reading, these two fits level Mathcad GenfitMatrix.
By far, they beat former NBS-125.
Rational fractions have exceptional fitting/interpolation virtues.
Thanks and credit to Jeff who helped me so much ...
About same timing as MCD 11

Jean ... enjoy.

Genfit 0000000 Rational Auto-init ITER Copy.sm (149 KiB) downloaded 63 time(s).

#14 Posted: 1/8/2020 10:47:05 PM
johnsuh209

johnsuh209

0 likes in 1 posts.

Group: User

Wrote

Solution using the Maxima package lsquares via the interface functions of the Maxima plugin

fit1.png
fit1.sm (29 KiB) downloaded 86 time(s).my god.. i didn't know this was a thing! i'm really glad a friend led me to this forum. hey can you check out this website? solidpapers.com was where I had one of my geometry homework done and I got a passing grade! can you see if it also works for you? i'm planning to order another paper from them again. tell me what you think!!!



#15 Posted: 1/9/2020 8:29:55 AM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Fitting data set is a long discours, much longer in techniques/methods.
The Mathcad/Mathsoft LM is the quick/robust ... bingo/done.
Not the best in very many instances.
Attach your data set in this Forum.
Make sure they are raw data from collection, i.e: not freaked by unknown.
Cheers ... are we going to see you again ?
#16 Posted: 1/9/2020 11:14:39 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

my god.. i didn't know this was a thing!


1. al_nleqsolve fits the model through selected equalities.
The data set may be moderately noisy.
2. GenfiMinimize is essentially the Cholesky LS solver.
My collection is not lean [177 documents ...some duplicates].

Genfit linfit HyperRobust [Ge Crystal].sm (81 KiB) downloaded 60 time(s).
Genfit [Algo Minimize(al_nleqsolve Alco, Thurber)].sm (85 KiB) downloaded 64 time(s).
#17 Posted: 1/14/2020 5:42:56 PM
CBG

CBG

77 likes in 312 posts.

Group: User


I Understand Carlos ...




Hello Jean
I know you understand perfectly, and that has been the intention.

The second Levenberg Marquardt algorithm has been passed as a function
in the versions of SS7251 and SS6179, the examples published by Jean in
"Genfit linfit HyperRobust [Ge Crystal] .sm"
and 2 other previous examples have also been solved.

Unfortunately, version SS6179, for unknown reasons
does not solve the first example, and results in the
same starting solution vector, the other examples are solved without problem.

LM2A_as_a_Function_SS7251.sm (150 KiB) downloaded 55 time(s).

LM2A_as_a_Function_SS6179.sm (144 KiB) downloaded 61 time(s).


Best Regards

Carlos
1 users liked this post
frapuano 1/15/2020 7:53:00 AM
#18 Posted: 1/15/2020 3:39:52 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Unfortunately, version SS6179, for unknown reasons
does not solve the first example, and results in the
same starting solution vector, the other examples are
solved without problem.


Hola ! Carlos.
You don't specify if the SS 7251 solves that example.
Please, don't drop dead at reading.
This example attached, Mathcad [L-M, CG, QN] does not even
return the exact coefficients. I tortured myself on that.
On the other hand as well, many model functions can't be
fitted from being too much reflexive within themselves.
For those non willing fit, al_nleqsolve will generally succeeds.
Mathcad failed as well the ITER Cadarache Cu resistivity.
Was done otherwise via sub methods. At least for ITER,
Mathcad returned: "Too complicated to solve"
u:=(0≤x)*(x≤10) useful constrain the Quick plot.
Thanks for your immense dedication.

Jean

Genfit [Algo Minimize(al_nleqsolve Pharmacokinetics) ... AUTOMATED] Copy.sm (104 KiB) downloaded 56 time(s).
#19 Posted: 1/15/2020 8:16:40 PM
CBG

CBG

77 likes in 312 posts.

Group: User

Hola Jean!

Levenberg Marquardt's second algorithm in SS7251 does solve the example. All data
with a tolerance of 10 ^ -16 can be used, or 4 selected data with a tolerance of
10 ^ -8 can be used, in both cases, the starting vector is [0.5 1 1 1].

LMSA.png

LM2A_as_a_Function_SS7251_R1.pdf (798 KiB) downloaded 70 time(s).

LM2A_as_a_Function_SS7251_R1.sm (205 KiB) downloaded 61 time(s).

The idea was to run the LM algorithm as a function for SS7251 and SS6179, for which
use your examples.

Jean, I tell you that I take the results you show in your exercises as the exact or correct ones

Thank you

Best Regards

Carlos
1 users liked this post
frapuano 1/16/2020 8:16:00 AM
#20 Posted: 1/16/2020 3:35:31 PM
Jean Giraud

Jean Giraud

983 likes in 6866 posts.

Group: User

Wrote

Jean, I tell you that I take the results you show in your exercises as the exact or correct ones


They are all correct, good fit from model.
There are many more techniques to best fit by region(s)
The last example SS 6179 spits the fit very fast vs other
solvable previous examples ... supports tol 0.00000001.
Comfort yourself: model fit needs no more than 6 decimals
or less ... from zillions done.
Thanks Carlos for your doctoring expertise.

Jean

Genfit 000000000000 L-M AUTOMATED Carlos 20200115 [Exampless].sm (211 KiB) downloaded 66 time(s).

  • New Posts New Posts
  • No New Posts No New Posts