muchas gracias de ante mano
el codigo se encuentra en este link:
http://www.jaterli.com/codigo-fuente...n-C-1/382.html
salu2
esto es lo que llevo en este momento, solo que no se que usar en vez del scanf de C no se como acomodar esta parte en php.
Código PHP:
<?php
/*Variables Globales */
$matriz[50][50];
$identidad[50][50];
$n; //$n $$contiene el tama¤o de la matriz cuadrada
/*Funciones*/
hallar_inversa();
escalonar_matriz();
permutar_filas($fila1, $fila2);
multip_fila($fila,$factor);
sumar_fila_multip($fila1,$fila2, $factor);
ceros_abajo($fila_pivote, $$columna_pivote);
ceros_arriba($fila_pivote, $$columna_pivote);
generar_matriz_identidad();
/*cuerpo*/
function main()
{
global $matriz,$identidad,$n;
$fi;
$co;
do{
print("Ingrese el tama¤o de la matriz cuadrada: ");
scanf("%i",&$n);
if($n>50 || $n<2) {printf("El numero debe estar entre 2 y 50n");}
}while($n>50 || $n<2);
for($fi=0;$fi<$n;$fi++)
{
for($co=0;$co<$n;$co++)
{
printf("Ingrese el valor de matriz[%i][%i]",$fi+1,$co+1);
scanf("%lf",&matriz[$fi][$co]);
}
}
hallar_inversa();
return 0;
}
/*-------------------------------------------------------------------------*/
function hallar_inversa()
{
global $matriz,$identidad,$n;
$cont;
$cont2;
$flag=0;
escalonar_matriz();
generar_matriz_identidad(); //rellena la matriz identidad
for($cont=0;$cont<$n;$cont++) //re$corre $filas
{
for($cont2=0;$cont2<$n;$cont2++) //re$corre $columnas
{
if($matriz[$cont][$cont2]!=0) //busca pivote (elemento ditinto de 0)
{
if($matriz[$cont][$cont2]!=1) //si pivote no es 1, se lo multiplica
{
multip_fila($cont,pow($matriz[$cont][$cont2],-1));
}
ceros_arriba($cont,$cont2); // se hacen 0's por arriba
ceros_abajo($cont,$cont2); // y por debajo del pivote
break;
}
}
}
/*--------------------------------------------------------------*/
/* Una vez terminada esta operacion, la matriz identidad estara */
/* transformada en la inversa */
/* */
/* Ahora se $comprueba que la matriz original este transformada */
/* en la matriz identidad, de no ser asi la inversa obtenida */
/* no es valida y la matriz no tiena inversa */
/*--------------------------------------------------------------*/
for($cont=0;$cont<$n;$cont++)
{
for($cont2=0;$cont2<$n;$cont2++)
{
if($cont==$cont2)
{
if(matriz[$cont][$cont2]!=1) flag=1;
}
else
{
if(matriz[$cont][$cont2]!=0) flag=1;
}
}
}
if(flag==1)
{
printf("nnLa matriz no tiene inversann");
}
else
{
printf("nnLa Matriz Inversa es :nn");
for($cont=0;$cont<$n;$cont++)
{
for($cont2=0;$cont2<$n;$cont2++)
{
printf("%+#0.3f ",$identidad[$cont][$cont2]);
}
printf("$n");
}
}
printf("nPresione una tecla para continuar...");
}
/*-----------------------------------------------------------------------*/
/* */
/* Ordena la matriz de forma que quede en su forma escalonada por */
/* renglones */
/* */
/*-----------------------------------------------------------------------*/
function escalonar_matriz()
{
global $matriz,$identidad,$n;
$cont;
$col;
$ceros;
$vec[10];
$flag
$aux;
for($cont=0;$cont<$n;$cont++)
{
$col=0
$ceros=0;
if($matriz[$cont][$col]==0)
{
do{
$ceros++;
$col++;
}while($matriz[$cont][$col]==0);
}
$vec[$cont]=$ceros;
}
do
{
$flag=0;
for($cont=0;$cont<$n-1;$cont++)
{
if(vec[$cont]>vec[$cont+1])
{
$aux=$vec[$cont];
$vec[$cont]=$vec[$cont+1];
$vec[$cont+1]=$aux;
permutar_filas($cont,$cont+1);
$flag=1;
}
}
}while($flag==1);
}
/*----------------------------------------------------------------------*/
/* SE DEFI$nE$n LAS 3 OPERACIO$nES ELEME$nTALES DE FILA */
/* */
/* Las operaciones que se le realizen a la matriz para reducirla */
/* tambien deberan realizarsele a la matriz identidad para obtener */
/* la matriz inversa */
/*----------------------------------------------------------------------*/
function permutar_$filas($fila1,$fila2)
{
global $matriz,$identidad,$n;
$auxval;
$cont;
for($cont=0;$cont<$n;$cont++)
{
$auxval=$matriz[$fila1][$cont];
$matriz[$fila1][$cont]=$matriz[$fila2][$cont];
$matriz[$fila2][$cont]=$auxval;
$auxval=$identidad[$fila1][$cont];
$identidad[$fila1][$cont]=$identidad[$fila2][$cont];
$identidad[$fila2][$cont]=$auxval;
}
}
/*----------------------------------------------------------------------*/
function multip_fila($fila,$factor)
{
global $matriz,$identidad,$n;
$cont;
for($cont=0;$cont<$n;$cont++)
{
$matriz[$fila][$cont]=($matriz[$fila][$cont])* $factor;
$identidad[$fila][$cont]=($identidad[$fila][$cont])* $factor;
}
}
/*----------------------------------------------------------------------*/
function sumar_fila_multip($fila1,$fila2,$factor)
{
global $matriz,$identidad,$n;
$cont;
for($cont=0;$cont<$n;$cont++)
{
$matriz[$fila1][$cont]=($matriz[$fila1][$cont])+(($matriz[$fila2][$cont])*$factor);
$identidad[$fila1][$cont]=($identidad[$fila1][$cont])+(($identidad[$fila2][$cont])* $factor);
}
}
function ceros_arriba($fila_pivote,$columna_pivote)
{
global $matriz,$identidad,$n;
$cont;
for($cont=0;$cont<$fila_pivote;$cont++)
{
sumar_fila_multip($cont,$fila_pivote,(($matriz[$cont][$columna_pivote])*(-1)));
}
}
/*-------------------------------------------------------------------------*/
function ceros_abajo($fila_pivote,$columna_pivote)
{
global $matriz,$identidad,$n;
$cont;
for($cont=$columna_pivote+1;$cont<$n;$cont++)
{
sumar_fila_multip($cont,$fila_pivote,(($matriz[$cont][$columna_pivote])*(-1)));
}
}
/*-------------------------------------------------------------------------*/
function generar_matriz_identidad()
{
global $matriz,$identidad,$n;
$i;
$j;
for($i=0;$i<50;$i++)
{
for($j=0;$j<50;$j++)
{
if($i==$j) $identidad[$i][$j]=1;
else $identidad[$i][$j]=0;
}
}
}
?>