l_curve_tikh_svd: L-curve Tikhonov

View source: R/l_curve_tikh_svd.R

l_curve_tikh_svdR Documentation

L-curve Tikhonov

Description

L-curve for Tikhonov regularization

Usage

l_curve_tikh_svd(U, s, d, npoints, varargin = NULL)

Arguments

U

matrix of data space basis vectors from the svd

s

vector of singular values

d

the data vector

npoints

the number of logarithmically spaced regularization parameters

varargin

alpha_min, alpha_max: if specified, constrain the logrithmically spaced regularization parameter range, otherwise an attempt is made to estimate them from the range of singular values

Details

Calculates the L-curve

Value

eta

the solution norm ||m|| or seminorm ||Lm||

rho

the residual norm ||G m - d||

reg_param

corresponding regularization parameters

Author(s)

Jonathan M. Lees<jonathan.lees@unc.edu>

Examples

####  Vertical Seismic Profile example
set.seed(2015)
VSP = vspprofile()
t = VSP$t2
G = VSP$G
M = VSP$M
N = VSP$N

L1 = get_l_rough(N,1);
littleU = PEIP::GSVD(as.matrix(G), as.matrix(L1) );

BIGU = flipGSVD(littleU, dim(G), dim(L1) )

U1 = BIGU$U
V1 =BIGU$V
X1=BIGU$X
Lam1=BIGU$C
M1=BIGU$S

K1 = l_curve_tikh_svd(U1, diag(M1) , X1, 25, varargin = NULL)

rho1 =K1$rho
eta1 =K1$eta
reg_param1 =K1$reg_param
m1s =K1$m

###  store where the corner is (from visual inspection)
ireg_corner1=8;
rho_corner1=rho1[ireg_corner1];
eta_corner1=eta1[ireg_corner1];
print(paste("1st order reg corner is:  ",ireg_corner1));

plot(rho1,eta1,type="b", log="xy" ,
     xlab="Residual Norm ||Gm-d||_2", ylab="Solution Seminorm ||Lm||_2"  );


PEIP documentation built on Aug. 21, 2023, 9:10 a.m.