Com essa função chega-se ao resultado final da matriz escalonada, porém, não apresenta as matrizes intermediárias até chegar ao resultado final.

A = matrix(c(-2,4,6,0,0,0,-1,1,1,2,0,2),nr=3)

reducedRowEchelonForm <- function(A){
n<-nrow(A)
m<-ncol(A)
i<-j<-1
while(i<=n&&j<=m){
while(j<=m){
currentColumn <- A[,j]
currentColumn[1:n < i] <- 0
# find maximum pivot in current column at or below current row
which <- which.max(abs(currentColumn))
pivot <- currentColumn[which]
if(pivot==0){#checkfor0pivot
j<-j+1
next
5
}
if (which > i) A[c(i, which),] <- A[c(which, i),] # exchange rows
A[i,] <- A[i,]/pivot # pivot
row<-A[i,]
A<-A-outer(A[,j],row) #sweep
A[i,] <- row # restore current row
j<-j+1
break
}
i<-i+1
}
#0rowstobottom
zeros <- which(ap ply(A[,1:m], 1, function(x) all(x == 0)))
if (length(zeros) > 0){
zeroRows <- A[zeros,]
A <- A[-zeros,]
A <- rbind(A, zeroRows)
rownames(A) <- NULL
}
A
}

reducedRowEchelonForm(A)

Att.
André
 




De: Fernando A. Souza < nandodesouza@gmail.com >
Enviada: Quinta-feira, 10 de Outubro de 2013 12:32
Para: r-br@listas.c3sl.ufpr.br
Assunto: Re: [R-br] Função-escalonar

Em 10-10-2013 12:26, andrebvs@bol.com.br escreveu:
O escalonameno da função matinv() mostra as operações realizadas até chegar no resulado final?

Att.
André
 


De: Benilton Carvalho < beniltoncarvalho@gmail.com >
Enviada: Quinta-feira, 10 de Outubro de 2013 10:09
Para: r-br < r-br@listas.c3sl.ufpr.br >
Assunto: Re: [R-br] Função-escalonar
scale() nao e' o q vc procura, Fatima.
Ha' algum tempo, qdo o pacote Design ainda era suportado, havia a funcao matinv() que fazia escalonamento por Gauss-Jordan... mas, atualmente, o pacote nao e' suportado... Se vc tiver uma versao antiga do R, vc ainda pode tentar instala'-lo.
b


Em 10 de outubro de 2013 07:54, Fernando A. Souza <nandodesouza@gmail.com> escreveu:
Em 10-10-2013 07:12, Maria de Fatima Ferreira Almeida escreveu:
Gostaria de saber se existe alguma função do R que faz escalonamento de matrizes. Alguém poderia me ajudar?

_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Veja a função scale() do R

_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
 


_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
Ah sim ! Benilton, você tem razão,.Scale não faz o que ela deseja não! No endereço :http://socserv.socsci.mcmaster.ca/jfox/Courses/R-course/exercises-programming.pdf, há uma função que faz o escalonamento de uma matriz pelo escalonamento gaussiano desenvolvida pelo Jonh Fox. Ela deve resolver seu problema