估值分析作业一
问题:
要求:使用Levenberg-Marquardt算法解答
解题思路:使用L-M算法求解最优化问题,通过迭代,修正,一步步逼近最优点,在精确度符合问题要求或者迭代次数达到限制时停止。
代码:
a=[1 5;3 4],b=[17;18]; %ax-b
k=1;
%x1(k)=0,x2(k)=0;
x(:,k)=[0;0];
eps=1.0e-6; %精确度
m(k)=0.01;
n1=0.25,n2=0.75
r1=0.5,r2=2;
n_iters=50; % 迭代最大次数
count=1;
J=a; %雅克比矩阵
for k=1:n_iters
%k=1;
if norm(J'*(a*x(:,k)-b))<=eps
break;
end;
d(:,k)=-inv((J'*J+m(k)*eye(2))) *J'*(a*x(:,k)-b);
mid1=(0.5*norm(a*x(:,k)-b)-0.5*norm(a*(x(:,k)+d(k))-b));
mid2=(0.5*norm(a*x(:,k)-b)-0.5*norm(a*x(:,k)+J*d(:,k)-b)^2);
p=mid1/mid2;
if p<n1
m(k+1)=r2*m(k);
end;
if n2>p&&p>=n1
m(k+1)=m(k);
end;
if p>=n2
m(k+1)=r1*m(k);
end;
x(:,k+1)=x(:,k)+d(:,k);
end;
x(:,k) %显示最优值
运行结果:
x1和x2的迭代过程: