-
Notifications
You must be signed in to change notification settings - Fork 3
/
davidsonTest.m
51 lines (40 loc) · 1.03 KB
/
davidsonTest.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
clc;
clear all;
close all;
# ******************************************
# Davidson Test (davidsonTest.m)
# Last Edited: Jan 26, 2017 (Shannon Houck)
#
# Tests the Davidson algorithm (davidson.m)
# and compares results to expected values.
#
# ******************************************
# define dimensions of test matrix
dim = 5000;
# define number of eigenvalues to find
eigVals = 2;
# generate random test matrix
ATest = rand(dim,dim);
ATest = ATest'+ATest; # symmetrize
ATest = ATest + diag(eye(dim,1)) - 5000*eye(dim);
# form initial search subspace
vTest = orth(rand(dim,eigVals));
# form subspace based on A
#vTest2 = zeros(dim,eigVals);
#[aD, aIndex] = sort(diag(ATest))
#for ( vIndex = 1:columns(vTest) )
# vTest2(aIndex(vIndex)) = 1;
#endfor
#ATest
#vTest2
# define convergence criteria
cutTest = 1e-4; # cutoff
maxTest = 300; # max iteration
printf("Mine:\n");
davidson(ATest, vTest, cutTest, maxTest);
expected = sort(eigs(ATest));
printf("Expected: ..."),;
for( i = 1:eigVals )
printf("%16.8f", expected(i));
endfor
printf("\n");