annotate +time/+expint/Arnoldi.m @ 710:023a95f63950 feature/quantumTriangles

Remove stubid print-out
author Ylva Rydin <ylva.rydin@telia.com>
date Tue, 21 Nov 2017 18:12:00 +0100
parents a95c89436916
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
706
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
1 function y = Arnoldi(A,v,t,tol,m)
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
2
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
3 n = size (v,1);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
4 V = zeros(n ,m+1);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
5 H = zeros(m+1,m);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
6
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
7 beta = norm(v);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
8 V(:,1) = v/beta;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
9 resnorm = inf;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
10
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
11 j=0;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
12
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
13 while resnorm > tol
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
14 j = j+1;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
15 z = A*V(:,j);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
16 for i=1:j
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
17 H(i,j) = z'*V(:,i);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
18 z = z - H(i,j)*V(:,i);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
19 end
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
20 H(j+1,j) = norm(z);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
21 e1 = zeros(j,1); e1(1) = 1;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
22 ej = zeros(j,1); ej(j) = 1;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
23 s = [0.01, 1/3, 2/3, 1]*t;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
24 for q=1:length(s)
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
25 u = expm(-s(q)*H(1:j,1:j))*e1;
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
26 beta_j(q) = -H(j+1,j)* (ej'*u);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
27 end
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
28 resnorm = norm(beta_j,'inf');
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
29 fprintf('j = %d, resnorm = %.2e\n',j,resnorm);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
30 if resnorm<=toler
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
31 break
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
32 elseif j==m
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
33 disp('warning: no convergence within m steps');
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
34 end
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
35 V(:,j+1) = z/H(j+1,j);
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
36 end
a95c89436916 add arnoldi
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
37 y = V(:,1:j)*(beta*u);