Gaofixedpoint.m | function [X, counter, err]=Gaofixedpoint(A, Q, C, k, q, errtol) | % Solving X = kQ + A∧(Xhat − C)∧qA, with Xhat = kronecker(I,X) | % Input: matrices , , , k > 1, 0 < q < 1, errtol | % Output: solution , iteration counter, final equation relative error | m, n = size (A); [p, w] = size (Q); [r, s] = size (C); % Input size etc checks | if floor (m/n) ~= m/n n ~= p n ~= w r ~= m s ~= m k | <= 1 … q <= 0 q>= 1, | error (’incompatible inputs’), | return, | end | I = eye (m/n); X = kQ; counter = 0; err = 10000; % Initialize | while err >= errtol Iterate | X = kQ + A’(kron(I, X) − C)∧qA; update X | S = X − kQ − A’(kron(I, X) − C)∧qA; form error matrix S | err = norm(S, 1)/norm(X, 1); relative iteration error | counter = counter + 1; Iteration counter | end | X = (X + X’)/2; make sure X is symmetric | S = X − kQ − A’(kron(I, X) − C)∧qA; form final error matrix S | err = norm(S, 1)/norm(X, 1); |
|