估值分析作业一

问题:

 

要求:使用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的迭代过程:

 

 

posted @ 2020-05-11 19:59  SjYu  阅读(142)  评论(0编辑  收藏  举报