%https://www.maths-forum.com/superieur/the-supplementary-complex-subspace-dim-one-t210239.html
I = eye(6);
b = [
[1,1,-1,-1,0,0],
[1,0,-1,0,0,0]
];
function r=gramSchmidt(m,v)
r = v;
l = size(m,1);
for i = 1:l
u = m(i,:);
r -= (r*u')*u / (u*u');
end
end
b(2,:) = gramSchmidt(b(1,:), b(2,:));
for i = 1:6
col = I(i, :);
v = gramSchmidt(b,col);
if norm(v)>1e-10
% keep v
b(end+1, :) = v;
else
discardedVector = col
end
end
supplem = b(3:end,:)
checkortho = supplem*b(1,:)'
%https://www.maths-forum.com/superieur/the-supplementary-complex-subspace-dim-one-t210239.html
b = [
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,2,3],
[1,1,1,2,0]
]';
suplem = []
%foreach canonical vector
start_vi=1;
for e_i = 1:size(b, 1)
%find pivot
found_vi = false;
for v_i = start_vi:size(b,2)
if b(e_i, v_i) ~= 0
found_vi = v_i;
break
end
end
if found_vi
%intervert columns
if found_vi ~= start_vi
old = b(:, start_vi);
b(:,start_vi) = b(:, found_vi);
b(:,found_vi) = old;
end
%make zeros on the right
for v_i = start_vi+1: size(b,2)
if b(e_i, v_i) ~= 0
f = b(e_i, v_i) / b(e_i, start_vi);
b(:, v_i) -= f*b(:,start_vi);
end
end
start_vi += 1;
else
v = zeros(size(b,1), 1);
v(e_i) = 1;
suplem(:,end+1) = v
end
end
b
suplem
#output
b =
1 0 0 0
1 0 0 0
1 0 0 0
1 1 0 0
1 2 -3 0
suplem =
0 0
1 0
0 1
0 0
0 0

Tu ne seras peut-être pas sensible à ces arguments, mais pour moi ils sont importants.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 23 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :