Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Alele54 en 7 Diciembre 2015, 23:21 pm



Título: AYUDA ... Sistema lineal NxN por el método de Gauss (PIVOTE)
Publicado por: Alele54 en 7 Diciembre 2015, 23:21 pm
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
  1. [asdasasad
  2. asdasdasd
  3. asd
  4.  
  5. sad
  6. asdsad/code]
  7.  
  8.  
  9. #include<stdio.h>
  10. #include<conio.h>
  11. #define N 10
  12. int i,j,k,n,m,c;
  13. float A[N][N],x[N],t,g,det,s,temp;
  14. int main()
  15. {
  16. //Lectura de datos
  17. printf("Introducir el el orden del sistema:");
  18. scanf("%d",&n);
  19. for(i=1;i<=n;i++){
  20. printf("Introducir los coeficientes de la fila %d:\n",i);
  21. for(j=1;j<=n+1;j++) {
  22. scanf("%f",&A[i][j]);
  23. }
  24. }
  25.  
  26.  
  27. //pivotear
  28. for(k=1;k<=n-1;k++){
  29. c=0;
  30. {while(A[k][k]==0){//Para cambio de filas
  31. for(i=1;i<=n+1;i++){
  32. t=A[k][i];
  33. A[k][i]=A[k+1][i];
  34. A[k+1][i]=t;
  35. }
  36. c++;//contador que ayudara a verificar si se cambio 0 por 0
  37. if(c>1){//condicion que probara con las demás filas
  38. for(m=1;m<=n+1;m++){
  39. temp=A[k][m];
  40. A[k][m]=A[k+c][m];
  41. A[k+c][m]=temp;
  42. }
  43. }
  44. }
  45. }
  46. for(i=1;i<=n;i++){
  47. g=-A [i] [k]/A[k][k];
  48. for(j=1;j<=n+1;j++){
  49. A[i+1][j]=A[i+1][j]+g*A[i][j];
  50. }
  51. }
  52. }
  53.  
  54.  
  55. //Determinante, matriz triangular superior
  56. det=1;
  57. for(k=1;k<=n;k++){
  58. det=det*A[k][k];
  59. }
  60.  
  61.  
  62. if(det==0)
  63. printf("\n El sistema es linealmente dependiente, puede tener varias o ninguna solucion\n");
  64. else {
  65. x[n]=(A[n][n+1])/(A[n][n]);
  66. for(i=n-1;i>0;i--){
  67. for(j=i+1;i<=n;j--){
  68. s=s+((A[i][j])*(x[j]));
  69. }
  70. A[i][n+1]= A[i][n+1]-s;
  71. x[i]=A[i][n+1]/A[i][i];
  72. }
  73. printf("\n Las soluciones del sistema son:\n");
  74. for(i=1;i<=n;i++){
  75. printf("\t x[%d]=%f \n",i,x[i]);
  76. }
  77. }
  78. return (0);
  79. }