【发布时间】:2021-03-25 20:44:37
【问题描述】:
我被告知在 R studio 中实现Levenberg-Marquardt algorithm,考虑到 lambda 的初始值等于 10。当梯度的范数低于公差时,算法必须停止。我还需要打印 x1、x2、λ、∇f(x)、d1 和 d2 每次迭代的值。关于如何做的任何想法?非常感谢提前
这就是我所拥有的:
library(pracma)
library(matlib)
MetodeLM<-function(f,xi,t)
{
l=10
stop=FALSE
x<-xi
k=0
while (stop==FALSE){
dk<- inv(hessian(f,x)+l*diag(diag(hessian(f,x))))
x1<-x+dk
if (Norm(grad(f,x1))<t){
stop<-TRUE
}
else{
if (f(x1) < f(x)){
l<-l/10
k<-k+1
stop<-FALSE
}
else{
l<-l*10
stop<-FALSE
}
}
}
}
【问题讨论】:
-
欢迎来到 SO!不是每个人都知道 Levenberg Marquadt 算法是什么,所以如果不定义它,就会限制可以帮助你的人数。此外,由于没有展示您自己的任何努力(您尝试了什么?为什么没有成功?您是否收到任何错误消息?)您不会激励人们帮助您。
-
我刚刚添加了我所拥有的,对不起
标签: r algorithm optimization mathematical-optimization nonlinear-optimization