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

📄 regudemo.m

📁 求解离散病态问题的正则化方法matlab 工具箱
💻 M
字号:
%REGUDEMO Tutorial script for Regularization Tools.% Per Christian Hansen, IMM, 12/19/97.echo on, clf% Part 1.  The discrete Picard condition% --------------------------------------%% First generate a "pure" test problem where only rounding% errors are present.  Then generate another "noisy" test% problem by adding white noise to the right-hand side.%% Next compute the SVD of the coefficient matrix A.%% Finally, check the Picard condition for both test problems% graphically.  Notice that for both problems the condition is% indeed satisfied for the coefficients corresponding to the% larger singular values, while the noise eventually starts to% dominate.[A,b_bar,x] = shaw(32);randn('seed',41997);e = 1e-3*randn(size(b_bar)); b = b_bar + e;[U,s,V] = csvd(A);subplot(2,1,1); picard(U,s,b_bar);subplot(2,1,2); picard(U,s,b);pause, clf% Part 2.  Filter factors% -----------------------%% Compute regularized solutions to the "noisy" problem from Part 1 % by means of Tikhonov's method and LSQR without reorthogonalization.% Also, compute the corresponding filter factors.%% A surface (or mesh) plot of the solutions clearly shows their dependence% on the regularization parameter (lambda or the iteration number).lambda = [1,3e-1,1e-1,3e-2,1e-2,3e-3,1e-3,3e-4,1e-4,3e-5];X_tikh = tikhonov(U,s,V,b,lambda);F_tikh = fil_fac(s,lambda);iter = 30; reorth = 0;[X_lsqr,rho,eta,F_lsqr] = lsqr(A,b,iter,reorth,s);subplot(2,2,1); surf(X_tikh), title('Tikhonov solutions'), axis('ij')subplot(2,2,2); surf(log10(F_tikh)), axis('ij')                title('Tikh filter factors, log scale')subplot(2,2,3); surf(X_lsqr(:,1:17)), title('LSQR solutions'), axis('ij')subplot(2,2,4); surf(log10(F_lsqr(:,1:17))), axis('ij')title('LSQR filter factors, log scale')pause, clf% Part 3.  The L-curve% --------------------%% Plot the L-curves for Tikhonov regularization and for% LSQR for the "noisy" test problem from Part 1.%% Notice the similarity between the two L-curves and thus,% in turn, by the two methods.subplot(1,2,1); l_curve(U,s,b); axis([1e-3,1,1,1e3])subplot(1,2,2); plot_lc(rho,eta,'o'); axis([1e-3,1,1,1e3])pause, clf% Part 4.  Regularization parameters% ----------------------------------%% Use the L-curve criterion and GCV to determine the regularization% parameters for Tikhonov regularization and truncated SVD.%% Then compute the relative errors for the four solutions.lambda_l = l_curve(U,s,b);   axis([1e-3,1,1,1e3]),      pausek_l = l_curve(U,s,b,'tsvd'); axis([1e-3,1,1,1e3]),      pauselambda_gcv = gcv(U,s,b);     axis([1e-6,1,1e-9,1e-1]),  pausek_gcv = gcv(U,s,b,'tsvd');   axis([0,20,1e-9,1e-1]),    pausex_tikh_l   = tikhonov(U,s,V,b,lambda_l);x_tikh_gcv = tikhonov(U,s,V,b,lambda_gcv);if isnan(k_l)  x_tsvd_l = zeros(32,1); % Spline Toolbox not available.else  x_tsvd_l = tsvd(U,s,V,b,k_l);endx_tsvd_gcv = tsvd(U,s,V,b,k_gcv);[norm(x-x_tikh_l),norm(x-x_tikh_gcv),... norm(x-x_tsvd_l),norm(x-x_tsvd_gcv)]/norm(x)pause, clf% Part 5.  Standard form versus general form% ------------------------------------------%% Generate a new test problem: inverse Laplace transformation% with white noise in the right-hand side.%% For the general-form regularization, choose minimization of% the first derivative.%% First display some left singular vectors of SVD and GSVD; then% compare truncated SVD solutions with truncated GSVD solutions.% Notice that TSVD cannot reproduce the asymptotic part of the% solution in the right part of the figure.n = 16; [A,b,x] = ilaplace(n,2);b = b + 1e-4*randn(size(b));L = get_l(n,1);[U,s,V] = csvd(A); [UU,sm,XX] = cgsvd(A,L);I = 1;for i=[3,6,9,12]  subplot(2,2,I); plot(1:n,V(:,i)); axis([1,n,-1,1])  xlabel(['i = ',num2str(i)]), I = I + 1;endsubplot(2,2,1), text(12,1.2,'Right singular vectors V(:,i)'), pauseclfI = 1;for i=[n-2,n-5,n-8,n-11]  subplot(2,2,I); plot(1:n,XX(:,i)), axis([1,n,-1,1]);  xlabel(['i = ',num2str(i)]), I = I + 1;endsubplot(2,2,1)text(10,1.2,'Right generalized singular vectors XX(:,i)')pause, clfk_tsvd = 7; k_tgsvd = 6;X_I = tsvd(U,s,V,b,1:k_tsvd);X_L = tgsvd(UU,sm,XX,b,1:k_tgsvd);subplot(2,1,1);  plot(1:n,X_I,1:n,x,'x'), axis([1,n,0,1.2]), xlabel('L = I')subplot(2,1,2);plot(1:n,X_L,1:n,x,'x'), axis([1,n,0,1.2]), xlabel('L \neq I')pause, clf% Part 6.  No square integrable solution% --------------------------------------%% In the last example there is no square integrable solution to% the underlying integral equation (NB: no noise is added).%% Notice that the discrete Picard condition does not seem to% be satisfied, which indicates trouble![A,b] = ursell(32); [U,s,V] = csvd(A);picard(U,s,b); pause% This concludes the demo.echo off

⌨️ 快捷键说明

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