MATLAB CODE FOR CIAT _II
MATLAB CODE FOR CIAT _II
% Display results
disp('Matrix A:');
disp(A);
if isHermitian
disp('A is a Hermitian matrix.');
else
disp('A is NOT a Hermitian matrix.');
end
if isUnitary
disp('A is a Unitary matrix.');
else
disp('A is NOT a Unitary matrix.');
end
% QR Decomposition
% Example Usage:
A = [1 0 0 ; 1 1 0; 1 1 1];
[Q, R] = qr_decomposition(A);
disp(Q);
disp(R);
function Q = gram_schmidt(A)
% GRAM_SCHMIDT performs the Gram-Schmidt orthogonalization process
% Input: A - an m x n matrix (m >= n) with linearly independent columns
% Output: Q - an m x n orthonormal matrix
[m, n] = size(A);
Q = zeros(m, n);
for i = 1:n
v = A(:, i);
for j = 1:i-1
proj = (Q(:, j)' * A(:, i)) * Q(:, j);
v = v - proj;
end
norm_v = norm(v);
if norm_v < 1e-10 % Check for zero norm
error('Matrix has dependent columns or numerical instability occurred');
end
Q(:, i) = v / norm_v;
end
end
% Example Usage:
A = [0 1 0; 1 0 1; 1 0 -1];
Q = gram_schmidt(A);
disp(Q);