LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
solveSylvPowersComplexSchur_FW.m
1function Y = solveSylvPowersComplexSchur_FW2(A, B, C)
2% X = solveSylvPowersComplexSchur_FW() solves the equation
3% sum_{j=1}^N B_j Y A^{j-1} = C
4% A: m x m
5% B = [B_1 B_2 ... B_N], B_j: n x n
6% C = n x m
7
8m = size(A,1);
9n = size(B,1);
10N = size(B,2)/n;
11
12[U,T] = schur(A,'complex');
13
14E = C*U;
15
16Tvec = zeros(m,N*m);
17Tvec(:,1:m) = eye(m);
18Tvec(:,m+1:2*m) = T;
19for i = 2:N-1
20 Tvec(:,i*m+1:(i+1)*m) = Tvec(:,(i-1)*m+1:i*m)*T;
21end
22
23%Z: matrix coeff of X_k
24X = zeros(n*m,1);
25k=1;
26Bold = B;
27B = reshape(B, n^2, N);
28Tvec = reshape(Tvec, m^2, N).';
29epsilon = 10e-14;
30while k <= m
31 if k > 1
32 W = reshape(B*Tvec(:,(k-1)*m+1:(k-1)*m+k-1), n,n*(k-1))*X(1:n*(k-1));
33 else
34 W = zeros(n,1);
35 end
36 Z = reshape(B*Tvec(:,(k-1)*m+k), n, n);
37 X(n*(k-1)+1:n*k) = Z\‍(E(:,k) - W);
38 k = k+1;
39end
40Y = real(reshape(X,n,m)*U');