In [1]:
## The Arnoldi and Lanczos processes
include("lecture-23-arnoldi-lanczos.jln")
function simple_cg(A,b,k)
  V,T,rho = lanczos(A,b,k)
  rhs = zeros(k)
  rhs[1] = norm(b)
  y = T \ rhs # solve the tridiagonal system
  x = V*y
end

A = randn(10,10)
A = A + A'
b = randn(10)
A * V[:, 1:3] - V * H = [0.0 -2.220446049250313e-16 0.0; 0.0 0.0 -2.220446049250313e-16; 0.0 2.220446049250313e-16 -5.551115123125783e-17; 0.0 -1.1102230246251565e-16 1.1102230246251565e-16; 0.0 2.220446049250313e-16 0.0]
norm(A * V[:, 1:4] - V * H) = 1.9510511359473314e-15
norm((A * U[:, 1:4] - U[:, 1:4] * T) - rho * U[:, end] * (begin
    x = zeros(4)
    #= /Users/dgleich/Dropbox/courses/cs515-2019/web/input/julia/lecture-23-arnoldi-lanczos.jln:61 =#
    x[4] = 1
    #= /Users/dgleich/Dropbox/courses/cs515-2019/web/input/julia/lecture-23-arnoldi-lanczos.jln:61 =#
    x
end)') = 1.5947383771526115e-15
norm(A * U[:, 1:4] - U[:, 1:end - 1] * T) = 2.9794854952159215
norm(S - T) = 0.0
Out[1]:
10-element Array{Float64,1}:
 -0.36128562217231047
 -0.06074324556832939
 -0.18846690328114693
  1.0752496573754668 
  1.738753949598025  
 -0.32286584719996414
 -0.35458074490762614
  2.0722807166928696 
 -0.1443434411287402 
  0.8627536805367055 
In [2]:
##
k = 10
V,T,rho = lanczos(A,b,k)
rhs = zeros(k)
rhs[1] = norm(b)
y = T \ rhs # solve the tridiagonal system
x = V[:,1:k]*y
Out[2]:
10-element Array{Float64,1}:
 -0.3094068430007657 
 -0.9633443732325389 
 -0.26053787081441154
 -1.8489950559166874 
 -1.4017819236133637 
  2.3345119817999387 
 -0.29235461718605527
  2.436766682642135  
  0.10731333020724726
  0.7973466609610009 
In [3]:
##
norm(b-A*x)
Out[3]:
1.6678302006177481e-12
In [4]:
##