def gauss(A,a=0,b=0):
p=min([p for p in [a,..,A.nrows()-1] if A[p][b]!=0]) #pivot !=0
A.swap_rows(a,p); A.rescale_row(a,1/A[a][b]) #<-transpose and rescale, add other row:
[A.add_multiple_of_row(c,a,-A[c][b]/A[a][b]) for c in [0,..,A.nrows()-1] if c!=a]
return gauss(A,a+1,b+1) if a+1<A.nrows() else A
@interact
def main(A=matrix(QQ,[[1,3,-2,1],[2,6,1,4],[-1,2,3,-4]])):
pretty_print(gauss(A))
main()
|
|
\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr}
1 & 0 & 0 & \frac{96}{25} \\
0 & 1 & 0 & -\frac{17}{25} \\
0 & 0 & 1 & \frac{2}{5}
\end{array}\right)
Click to the left again to hide and once more to show the dynamic interactive window
|