AYUDA ... Sistema lineal NxN por el método de Gauss (PIVOTE)

Iniciado por Alele54, 7 Diciembre 2015, 23:21 PM

0 Miembros y 1 Visitante están viendo este tema.

Alele54

hola..... necesito ayuda con programacion en c++... tengo que realizar un programa que resuelva un sistema lineal nxn, mi duda esta en el punto de que no si si mi mate o mi programación esta mal, uso el método del pivote, triangulando la matriz y luego resolucion inversa de las incógnitas.... AYUDA

compila bien; pero solo me resuelve sistemas 1x1.. jaja (ridiculo)..., no se es un tanto desalentador...
mi codigo es el siguiente:

Código (cpp) [Seleccionar]

[asdasasad
asdasdasd
asd

sad
asdsad/code]


#include<stdio.h>
#include<conio.h>
#define N 10
int i,j,k,n,m,c;
float A[N][N],x[N],t,g,det,s,temp;
int main()
{
//Lectura de datos
printf("Introducir el el orden del sistema:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("Introducir los coeficientes de la fila %d:\n",i);
for(j=1;j<=n+1;j++) {
scanf("%f",&A[i][j]);
}
}


//pivotear
for(k=1;k<=n-1;k++){
c=0;
{while(A[k][k]==0){//Para cambio de filas
for(i=1;i<=n+1;i++){
t=A[k][i];
A[k][i]=A[k+1][i];
A[k+1][i]=t;
}
c++;//contador que ayudara a verificar si se cambio 0 por 0
if(c>1){//condicion que probara con las demás filas
for(m=1;m<=n+1;m++){
temp=A[k][m];
A[k][m]=A[k+c][m];
A[k+c][m]=temp;
}
}
}
}
for(i=1;i<=n;i++){
g=-A [i] [k]/A[k][k];
for(j=1;j<=n+1;j++){
A[i+1][j]=A[i+1][j]+g*A[i][j];
}
}
}


//Determinante, matriz triangular superior
det=1;
for(k=1;k<=n;k++){
det=det*A[k][k];
}


if(det==0)
printf("\n El sistema es linealmente dependiente, puede tener varias o ninguna solucion\n");
else {
x[n]=(A[n][n+1])/(A[n][n]);
for(i=n-1;i>0;i--){
for(j=i+1;i<=n;j--){
s=s+((A[i][j])*(x[j]));
}
A[i][n+1]= A[i][n+1]-s;
x[i]=A[i][n+1]/A[i][i];
}
printf("\n Las soluciones del sistema son:\n");
for(i=1;i<=n;i++){
printf("\t x[%d]=%f \n",i,x[i]);
}
}
return (0);
}