Red de conocimiento informático - Conocimiento del nombre de dominio - Buscamos urgentemente un programa en C++ para el método de eliminación gaussiano de Jodan

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;

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);

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)

{

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));

}

}

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

{

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++)

{

cout<

if ((i+1)%6 == 0 )

{

cout<

}

}

cout<

Matriz Inversa(a,6);

for(i=0;i<36;i++)

{

cout<< a[i]<<" ";

if ((i+1)%6 == 0)

{

cout<

}

}

cout<

system("pausa");

devuelve 0 ;

}