> restart; > with(LinearAlgebra): > #Gauss-Elimination mit Ueberschreiben von A, Spaltenpivot > gaussSP:=proc(A) > global p; # p speichert die Zeilenvertauschungen > local n,m,piv,pivj,j,k,x; > n:=RowDimension(A); > p:=vector(n, i->i); > for m from 1 by 1 to n do > piv:= abs(A[m,m]); > pivj:= m; > for j from m+1 by 1 to n do > if abs(A[j,m]) > piv then piv := abs(A[j,m]); > pivj:=j > end if; > end do; > k:=p[m]; p[m]:=p[pivj]; p[pivj] :=k; > for k from 1 by 1 to n do > x[k]:=A[m,k]; A[m,k]:=A[pivj, k]; A[pivj,k]:= x[k] > end do; > for j from m+1 by 1 to n do A[j,m]:=A[j,m]/A[m,m]; > for k from m+1 by 1 to n do A[j,k]:=A[j,k]- A[j,m]*A[m,k] end do > end do; > end do; > evalm(A) > end proc: > A:=Matrix([[6.,7.,0.,1.,2.,5.],[13.,4.,2.,4.,5.,3.],[6.,2.,3.,6.,8.,9.],[1.,3.,0.,0.,2.,4.],[1.,1.,3.,5.,7.,9.],[0.,0.,4.,5.,0.,2.]]); > gaussSP(A); > >