multilinearbdurls.m

来自「对于一类非最小二乘问题」· M 代码 · 共 33 行

M
33
字号
function [Xs r]=multiLinearBDURLS(x0,A,La,b,Lb)
%用多步线性迭代法求解一个非线性最小二乘问题
% (Regularized least squares problem with bounded data uncertainty)
% BDU RLS:
% J3=min max[||[A+e_A]*x-[b+e_b]||^2+p||x||^2]
% where e_A,e_b:the uncertainty,||e_A||<=La,||e_b||<=Lb
% J3=>J4=min[[||Ax-b||+La*||x||+Lb]^2+p||x||^2]
% solution:x=inv(A'*A+r*I)*A'*b
%          r=La*||Ax-b||/||x||+p*||Ax-b||/(||Ax-b||+La*||x||+Lb)
% INPUT:
% x0: the initial estimate
% A,b: data
% La,Lb: the upper bound of the uncertainty of A and b
% 

Niter=50;
Xs=x0';
x=x0;
p=0.1;
idMtr=eye(size(A,2));
for Iiter=1:Niter
    norm1=(A*x)'*(A*x);
    norm2=(x'*x);
    r=La*norm1/norm2+p*norm1/(norm1+La*norm2+Lb);
    x=inv(A'*A+r*idMtr)*A'*b;
    Xs=[Xs;x'];
end





⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?