% Skript Aufgabe 27 Teil 1 clear all close all A = diag([0:0.01:2 2.5 3]); d = length(A); % zufälliger Stratvektor für Lanczos-Iteration b = randn(d,1); beta = 0; q0 = 0*b; q_1 = b/norm(b); % q_n, alpha_n, beta_n in Matrix bzw. Vektor abspeichern. Q = [q0,q_1]; Alpha = []; Beta = beta; N = 20; for n=1:N q_n = Q(:,end); q_n_1 = Q(:,end-1); beta_n_1 = Beta(end); v = A*q_n; alpha_n = q_n'*v; v = v - alpha_n*q_n - beta_n_1*q_n_1; beta_n = norm(v); q_new = v/beta_n; Beta = [Beta beta_n]; Alpha = [Alpha alpha_n]; Q = [Q, q_new]; end % Lanczos Polynom konstruieren und Ritzwerte einzeichen für N=9; N =9; T = diag(Alpha(1:N))+diag(Beta(2:N),-1)+diag(Beta(2:N),1); ritz = eig(T); p = poly(T); x = linspace(-0.5,3.5,1001); py = polyval(p,x); figure hold on plot(x,py,'b-'); grid plot(ritz,0*ritz,'r*'); legend('characteristic polynomial of T','Ritz values'); axis([-Inf, Inf, -4 ,2]) hold off % führenden 3 Ritzwerte für N=20 ausgeben. N=20; T = diag(Alpha(1:N))+diag(Beta(2:N),-1)+diag(Beta(2:N),1); ritz = eig(T); format long ritz(end-2:end)