Partial pivoting problem in matrix
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Netanel Malihi
le 4 Déc 2021
Réponse apportée : Pranjal Kaura
le 30 Déc 2021
I'm getting a mistake in my matrix when trying to get the max number at the column and swiching rows , I'm pretty sure its got to do with an incorrect index.
Im using the partial pivoting method.
thank you for your help.
clear;
clc;
n=5;
v=repelem(4,n);
A=diag(v);
i=1;
j=1;
A(1,n)=-1
A(n,1)=-1
for i=1:n
for j=1:n
if i==j+1 ||j==i+1
A(i,j)=-1;
end
end
end
b=1:n;
B=b'/n;
A=[A,B]
for k=1:n-1
[max_A1,row_i]=max(abs(A(k:end,k)))
if row_i~=k
A1=A(k,:)
A(k,:)=A(k,:)
A(row_i,:)=A1
else
end
for i=k+1:n
L=A(i,k)/A(k,k)
for j=k:n+1
A(i,j)=A(i,j)-L*A(k,j)
end
end
end
0 commentaires
Réponse acceptée
Pranjal Kaura
le 30 Déc 2021
Hey,
Please refer the code below
clear;
clc;
n=5;
v=repelem(4,n);
A=diag(v);
i=1;
j=1;
A(1,n)=-1;
A(n,1)=-1;
for i=1:n
for j=1:n
if i==j+1 ||j==i+1
A(i,j)=-1;
end
end
end
b=1:n;
B=b'/n;
A=[A,B];
% test matrices
% A = [25 5 1 106.8;
% 64 8 1 177.2;
% 144 12 1 279.2];
% A = [1 2 -4 3;
% 2 5 -6 10;
% -2 -7 3 -21;
% 2 8 -5 38];
% n = 4;
%partial pivoting code
for k=1:n-1
[max_A1,row_i]=max(abs(A(k:end,k)));
row_i = row_i - 1 + k;
if row_i~=k
A1=A(k,:);
A(k,:)=A(row_i,:);
A(row_i,:) = A1;
end
for i=k+1:n
L=A(i,k)/A(k,k);
A(i, k:end) = A(i, k:end) - A(k, k:end)*L;
% for j=k:n+1
% A(i,j)=A(i,j)-L*A(k,j)
% end
end
end
Hope this helps!
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Dates and Time dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!