File Exchange

## Gauss elimination with complete pivoting

version 1.2 (1.42 KB) by

This function calculate Gauss elimination with complete pivoting

Updated

This function calculate Gauss elimination with complete pivoting.

G)aussian (E)limination (C)omplete (P)ivoting
Input
A nxn matrix
Output
L = Lower triangular matrix with ones as diagonals
U = Upper triangular matrix
P and Q permutations matrices so that P*A*Q = L*U

examples :
[L U] = gecp(A);
[L U P] = gecp(A);
[L U P Q] = gecp(A);

Kostas

James Tursa

### James Tursa (view profile)

You need to take the syntax text from the above description and put it in the comment section of your code. You also need to add an H1 line at the top. The way it is now, the user has to manually edit your source code to get this information since it does not appear when you type "help gecp", so it is not user friendly.

carlos lopez

### carlos lopez (view profile)

My two cents regarding applications for this submissions. What happends when you run out of memory with A\b? In some cases you can accept a painfully slow implementation which fits into available memory. And Gaussian Elimination can do the job.

Dario

### Dario (view profile)

it seems, this doesn't compute P,L,U,Q such that P*A*Q = L*U
but such that A = P*L*U*Q or equivalently P'*A*Q' = L*U

sid s

Somethings wrong in the calculation of Q. We do not get L*U==P*A*Q;
Consider the matrix below with 1 on the diagonal, -1 in the lower triangle and 1 on the last column. The code below plots the error between L*U and P*A*Q and it is definitely not zero.

N=10;
A=ones(N,N);
A=A-2*tril(A,-1)-triu(A,1);
A(:,N)=1;

[L,U,P,Q]=gecp(A);
mesh(abs(L*U-P*A*Q));

If its just a convention mistake then this is a good code.

example mail

plewase details with example

Kate Mouzakis

John Trevor

Very Useful

rachid el moustachir

Nick Cheilakos

I promise to update soon the documentation. But now I have a problem and I can't do it now.

Why someone use this function?

If you want to find some data about the growth of this method you can't use lu. (Because lu use partitial pivoting)

Also you can use it if you want to study the pivot structure of Hadamard matrices.

I agree with Dimitris' comments. LU does partitial pivoting and not complete.

In courses of Numerical Linear Algebra Gauss elimination with complete pivoting is very usefull.

I don't give 5 beucause the lack of documentetion.

mpampix short

Dimitris Simos

I give a 4 out of 5 rating to this submission. It is a really good implementation of GECP, taking full advantage of matlab vectorizing capabililities. I don;t give a 5 to 5 rating, due to the lack of documentation.

I agree with Duane only to one point, to the H1 line; this should point to % GECP Gaussian Elimination Complete Pivoting...

Duane, I firmly believe that you are judging too hard this submission.

Firsty, the built-in function of LU, does partial pivoting and not complete pivoting. So, this submission is worthy of its place here. In addition, an implementation of GECP, so far to my knowledge is wanted in many universities in courses of Numerical Linear Algebra.

Duane Hanselman

This submission uses good syntax and does not ignore vectorization, but (a) it does not use standard MATLAB help such as the H1 line or describe the order of the output arguments, (b) it does not say that this is educational code since the built in function LU does what this function does already so it has no other practical use, (c) it does not have any internal comments that would provide educational value to the user.

After appropriate revision, this is a welcome addition to the FEX. Perhaps there should be an "educational algorithm implementation" category, so that no one confuses code such as this with something already built in to MATLAB.