function [x,A]=partiel(A,b)
n=size(A,1);
if det(A) == 0
disp('votre système admet soit une infinité de solution soit pas de solution');
else
%Matrice triangulaire supérieure
% étape 1 : élimination des variables inférieures
for k=1:n-1
% Trouver l' élément pivot
[pivot,p] = max(abs(A(k:n,k)));
p = p + k - 1;
if pivot == 0
disp('Le système n''a pas de solution unique.');
end
% Permuter les lignes si nécessaire
if p ~= k
A([k p],:) = A([p k],:);
b([k p]) = b([p k]);
end
% éliminer les variables inférieures
for i=k+1:n
m = A(i,k)/A(k,k);
A(i,k:n) = A(i,k:n) - m*A(k,k:n);
b(i) = b(i) - m*b(k);
end
end
% étape 2 : Résolution du système triangulaire supérieure
x = zeros(n,1);
x(n) = b(n)/A(n,n);
for k=n-1:-1:1
x(k) = (b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
end
end
return