Buscamos urgentemente un programa en C++ para el método de eliminación gaussiano de Jodan
//Esto es lo que escribí antes y fue compilado por el compilador vc
#include
#include
#include
#include
usando el espacio de nombres std;
void swap(doble &a,doble &b)
{
doble temp=a;
a=b;
b=temp;
}
/*************************************** ***** ******
*Nombre de la función: InverseMatrix
*Introducción a la función: Encuentra la matriz inversa (método Gaussiano-Jordan)
*Parámetros de entrada: matriz de primera dirección de matriz (matriz bidimensional), fila de orden
*Parámetro de salida: matriz inversa de la matriz original
*Valor de retorno: éxito, 0; fracaso, 1
p>*Función de llamada: swap(double &a,double &b)
*Autor:
*Tiempo de finalización: 2009-10-04
******************************************* *****/
int InverseMatrix(doble *matriz,const int &fila)
{
doble *m=nuevo doble[fila*fila] ;
doble *ptemp,*pt=m;
int i,j;
ptemp=matrix;
para (i =0;i { para (j=0;j { *pt=*ptemp; p> ptemp++; pt++; } } int k ; int *is=new int[fila],*js=nuevo int[fila]; for (k=0;k { double max=0; //Selecciona todos los pivotes //Encuentra el elemento más grande para ( i=k;i { para (j=k;j { if (fabs(*(m +i*row+j))>max) { max=*(m+i*row+j); p> es[k] =i; js[k]=j; } } } if ( 0 == max) { return 1; } //Fila intercambiar if (is[k]!=k) { por (i=0;i ;i++) { swap(*(m+k*fila+i),*(m+is[k]*fila+i)); } } //Intercambio de columnas if (js[k]!=k) { p> for (i=0;i { swap(*(m+i*fila+k),*(m+i *fila+js[k])); } } *(m+k*fila+k)=1/(*(m +k*fila+k)); for (j=0;j { si (j!=k) { *(m+k*fila+j)*=*((m+k*fila+k)); } p> } para (i=0;i { si (i!=k) { para (j=0;j { si(j!=k) { *(m+i*fila+j)-=*(m+i*fila+k)**(m+k*fila+j); } } } } para (i=0;i { if(i!=k) { *(m+i*fila+k)*=-(*(m +k*fila+k)); } } } int r; //Restaurar for (r=row-1;r>=0;r--) { if (js[r]!= r) { para (j=0;j { intercambiar(*(m+ r *fila+j),*(m+js[r]*fila+j)); } } si (es[r ] !=r) { para (i=0;i { intercambiar(* ( m+i*fila+r),*(m+i*fila+es[r])); } } }< / p> ptemp=matriz; pt=m; for (i=0;i { p > for (j=0;j { *ptemp=*pt; ptemp++; pt++; } } eliminar []is; eliminar []js; eliminar []m; devolver 0; } int main() > { doble a[6*6]; int i; for(i=0;i<36;i++) { a[i] = rand()%1001; } for(i=0;i< 36;i++) {