• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: Matlab
  • 标签: 正则化  MATLAB  

资源简介

关于解决病态方程组常用的Tikhonov正则化方法,对开始学习求解不适定问题有比较大的意义。

资源截图

代码片段和文件信息

function [x_lambdarhoeta] = tikhonov(UsVblambdax_0) 
%TIKHONOV Tikhonov regularization. 

% [x_lambdarhoeta] = tikhonov(UsVblambdax_0) 
% [x_lambdarhoeta] = tikhonov(UsmXblambdax_0)   sm = [sigmamu] 

% Computes the Tikhonov regularized solution x_lambda.  If the SVD 
% is used i.e. if U s and V are specified then standard-form 
% regularization is applied: 
%    min { || A x - b ||^2 + lambda^2 || x - x_0 ||^2 } . 
% If on the other hand the GSVD is used i.e. if U sm and X are 
% specified then general-form regularization is applied: 
%    min { || A x - b ||^2 + lambda^2 || L (x - x_0) ||^2 } . 

% If x_0 is not specified then x_0 = 0 is used.
%
% Note that x_0 cannot be used if A is underdetermined and L ~= I.

% If lambda is a vector then x_lambda is a matrix such that 
%    x_lambda = [ x_lambda(1) x_lambda(2) ... ] . 

% The solution norm(standard-form case) or seminorm (general-form
% case) and the residual norm are returned in eta and rho. 
 
% Per Christian Hansen IMM April 14 2003. 
 
% Reference: A. N. Tikhonov & V. Y. Arsenin “Solutions of 
% Ill-Posed Problems“ Wiley 1977. 
 
% Initialization. 
if (min(lambda)<0) 
  error(‘Illegal regularization parameter lambda‘) 
end 
m = size(U1);
n = size(V1);
[pps] = size(s); 
beta = U(:1:p)‘*b; 
zeta = s(:1).*beta; 
ll = length(lambda); x_lambda = zeros(nll); 
rho = zeros(ll1); eta = zeros(ll1); 
 
% Treat each lambda separately. 
if (ps==1) 
  
  % The standard-form case.
  if (nargin==6) omega = V‘*x_0; end 
  for i=1:ll 
    if (nargin==5) 
      x_lambda(:i) = V(:1:p)*(zeta./(s.^2 + lambda(i)^2)); 
      rho(

评论

共有 条评论