Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. [U, S, V, flag] = svds(data, nSVDs, 'L')
  2.  
  3. flag = 1
  4. svdOpts = struct('tol', 1e-10, 'maxit', 600, 'disp', 0);
  5. while flag:
  6. if svdOpts.maxit > 1e6
  7. error('There''s a real problem here.')
  8. end
  9.  
  10. [U, S, V, flag] = svds(data, nSVDs, 'L', svdOpts)
  11. svdOpts.maxit = svdOpts.maxit*2
  12. end
  13.  
  14. % Generate data for SVD failure to converge
  15. % Kernel functions
  16. data_fun1 = @(t, tau)(exp(-t*(1./tau)));
  17. t = linspace(0, 10, 26)';
  18. tau1 = logspace(-1, log10(5), 150);
  19. k1 = data_fun1(t, tau1);
  20.  
  21. gamma = 4257;
  22. n = 6;
  23. tau = 0.075;
  24. A = -(2/3)*(2*pi*gamma)^2*n*tau.^3;
  25.  
  26. data_fun2 = @(V, t)exp(A*t*(V.^2));
  27. V = linspace(0, 0.4, 29);
  28. tau3 = logspace(-1, log10(5), 150)';
  29. tau3 = tau3*1e-5;
  30. k2 = data_fun2(V, tau3)';
  31.  
  32. svdOpts = struct('tol', 1e-10, 'maxit', 1e3, 'disp', 0);
  33. svdOpts2 = svdOpts;
  34. flag = 1;
  35. while flag
  36. if svdOpts2.maxit > 1e8
  37. break
  38. end
  39.  
  40. [U1, S1, V1, flag] = svds(k1, length(t), 'L', svdOpts);
  41. svdOpts2.maxit = svdOpts2.maxit * 2;
  42. end
  43. flag
  44. % flag == 0
  45. flag = 1;
  46.  
  47. while flag
  48. if svdOpts2.maxit > 1e8
  49. break
  50. end
  51.  
  52. [U2, S2, V2, flag] = svds(k2, length(V), 'L', svdOpts);
  53. svdOpts2.maxit = svdOpts2.maxit * 2;
  54. end
  55. flag
  56. % flag == 1
  57.  
  58. >> tic, [U2, S2, V2, flag] = svds(k2, length(V), 'L'); toc
  59. Elapsed time is 0.830326 seconds.
  60. >> flag
  61.  
  62. flag =
  63.  
  64. 1
  65.  
  66. >> tic, [U2, S2, V2] = svd(k2); toc
  67. Elapsed time is 0.002851 seconds.
  68. >> norm(U2*S2*V2'-k2)/norm(k2)
  69.  
  70. ans =
  71.  
  72. 8.4982e-16
  73.  
  74.  
  75. >> max(max(abs(U2*S2*V2'./k2-1)))
  76.  
  77. ans =
  78.  
  79. 5.8111e-12
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement