[ Foro de C ]

Matriz escalonada en C

25-Dec-2013 17:51
Jesús ++
1 Respuestas

un problema q me dejaron, pense hacerlo de esta manera:
primero escalonar la matriz inferior y superiormente, luego pasarla a la matriz identidad y tomar una matriz q empiece en la identidad y realizar las mismas operaciones q a la matriz q ingrese por teclado... el problema esta en escalonarlo, si bien lo he probado manualmente, la computadora solo atina a escalonar, pero los terminos centrales no cambian de valor... el primer paso (y en el q busco ayuda seria escalonar la matriz superiormente) el resto ya lo tengo pensado


#include<stdio.h>
#include<conio.h>
int main(){
    int i,j,k,n;
    float  x[80][80];

    
    printf("ingresar el orden de la matriz\n");
    scanf("%d",&n);
    
    for(i=1; i<=n;i++){
    for(j=1; j<=n;j++){
    printf("ingresar x[%d][%d]: ",i,j);
    scanf("%f",&x[i][j]);}}
    
    for(k=1; k<n;k++){
    for(i=k+1; i<=n;i++){
    for(j=1; j<=n;j++)
    x[i][j]=x[i][j]-(x[k][j]*x[i][k])/x[k][k];
    
    }}
    
    printf("la matriz escalonada es");
    for(i=1; i<=n;i++){
                      printf("\n");
             for(j=1; j<=n;j++)
                      printf("%f  ",x[i][j]);}
    
    for(k=n; k>1;k--){
    for(i=k-1; i>=1;i--){
    for(j=n; j>=1;j--)
    x[i][j]=x[i][j]-(x[k][j]*x[i][k])/x[k][k];
    }}

printf("la matriz escalonada es");
    for(i=1; i<=n;i++){
                      printf("\n");
             for(j=1; j<=n;j++)
                      printf("%f  ",x[i][j]);}
 
    getch();
}




26-Dec-2013 00:44
Nacho Cabanes (+83)

En cuanto tienes una matriz escalonada inferior o superior, convertir la diagonal en unos debería ser muy fácil: divide toda la fila por el valor que en ese momento tiene el valor correspondiente de la diagonal. Por ejemplo, si el elemento de la diagonal es un 3, deberás dividir entre 3 todos los elementos de esa fila.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)