⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lagrange.m

📁 求解离散病态问题的正则化方法matlab 工具箱
💻 M
字号:
function [La,dLa,lambda0] = lagrange(U,s,b,more)%LAGRANGE Plot the Lagrange function for Tikhonov regularization.%% [La,dLa,lambda0] = lagrange(U,s,b,more)% [La,dLa,lambda0] = lagrange(U,sm,b,more)  ,  sm = [sigma,mu]%% Plots the Lagrange function%    La(lambda) = || A x - b ||^2 + lambda^2*|| L x ||^2% and its first derivative dLa = dLa/dlambda versus lambda.% Here, x is the Tikhonov regularized solution.%% If nargin = 4, || A x - b || and || L x || are also plotted.%% Returns La, dLa, and the value lambda0 of lambda for which% dLa has its minimum.% Per Christian Hansen, IMM, 12/22/97.% Set default number of points.npoints = 200;% Initialization.[m,n] = size(U); [p,ps] = size(s);beta = U'*b; beta2 = b'*b - beta'*beta;if (ps==2)  s = s(p:-1:1,1)./s(p:-1:1,2); beta = beta(p:-1:1);endxi = beta(1:p)./s;% Compute the L-curve.eta = zeros(npoints,1); rho = eta;lambda(npoints,1) = s(p);ratio = (s(1)/s(p))^(1/(npoints-1));for i=npoints-1:-1:1, lambda(i) = ratio*lambda(i+1); endfor i=1:npoints  f = fil_fac(s,lambda(i));  eta(i) = norm(f.*xi);  rho(i) = norm((1-f).*beta(1:p));endif (m > n & beta2 > 0), rho = sqrt(rho.^2 + beta2); end% Compute the Lagrange function and its derivative.La = rho.^2 + (lambda.^2).*(eta.^2);dLa = 2*lambda.*(eta.^2);[mindLa,mindLi] = min(dLa); lambda0 = lambda(mindLi);% Plot the functions.if (nargin==3)  loglog(lambda,La,'-',lambda,dLa,'--',lambda0,mindLa,'o')  legend('La','dLa/d\lambda')else  loglog(lambda,La,'-',lambda,dLa,'--',lambda,eta,':',lambda,rho,'-.',...         lambda0,mindLa,'o')  legend('La','dLa/d\lambda','|| L x ||_2','|| A x - b ||_2')endxlabel('\lambda')title('Lagrange function La and its derivative')

⌨️ 快捷键说明

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