-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathtest_bartelsStewart.m
62 lines (42 loc) · 1023 Bytes
/
test_bartelsStewart.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
51
52
53
54
55
56
57
58
59
60
61
62
function pass = test_BartelsStewart( )
% Test generalized Sylvester matrix equation solver
tol = 1e-8;
%%
n = 10; m = n-1;
rng(0)
A = rand(m); B = rand(n); C = rand(m); D = rand(n); X = rand(m,n);
E = A * X * B.' + C * X * D.';
Y = bartelsStewart(A, B, C, D, E);
err(1) = norm( Y - X );
pass(1) = err(1) < tol;
%%
A = rand(m) + 1i*rand(m); B = rand(n) + 1i*rand(n);
C = rand(m) + 1i*rand(m); D = rand(n) + 1i*rand(n);
X = rand(m,n) + 1i*rand(m,n);
E = A * X * B.' + C * X * D.';
Y = bartelsStewart(A, B, C, D, E);
err(2) = norm( Y - X );
pass(2) = err(2) < tol;
%%
A = rand(m);
B = eye(n);
C = eye(m);
D = rand(n);
X = rand(m,n);
E = A * X * B.' + C * X * D.';
Y = bartelsStewart(A, [], [], D, E);
err(3) = norm( Y - X );
pass(3) = err(3) < tol;
%%
A = rand(m) + 1i*rand(m);
B = eye(n);
C = eye(m);
D = rand(n) + 1i*rand(n);
X = rand(m,n) + 1i*rand(m,n);
E = A * X * B.' + C * X * D.';
Y = bartelsStewart(A, [], [], D, E);
err(4) = norm( Y - X );
pass(4) = err(4) < tol;
%%
% err.'
end