SoloCodigo
Programación General => C/C++ => Visual C++ => Mensaje iniciado por: AugustZamo en Lunes 12 de Abril de 2010, 22:52
-
Hola a Todos es mi primer Tema qe publico y espero puedan ayudarme, he hecho el siguiente código, sin embargo sólo funciona para una matriz de 2*2 y el otro para dos ecuaciones... y necesito que funcione para el número de ecuaciones que el usuario quiera así como para el tamaño de la matriz que desee...
Para la Matriz inversa:
#include <iostream>
using namespace std;
int i,j;
float m1[1000][1000], coef, aux[1000], pivote;
int main()
{
cout << "ntBienvenido al Generador de Matrices Inversasn";
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
cout << "Ingrese el valor de [" <<i<< "]["<< j <<"]";
cin >> m1 [j];
}
}
for (i=0;i<2;i++)
for(j=2;j<4;j++)
{
if(i==(j-2))
m1[j]=1;
else
m1[j]=0;
}
//Iteracion 1
/*Pivote*/
pivote=m1[0][0];
for (j=0;j<4;j++)
m1[0][j]=m1[0][j]/pivote;
/*Para
el otro renglón*/
coef=m1[1][0];
for (j=0;j<4;j++)
aux[j]=m1[0][j]*(coef*-1);
for (j=0;j<4;j++)
m1[1][j]=m1[1][j]+aux[j];
/*Para la
iteración 2*/
/*Pivote 2*/
pivote=m1[1][1];
for (j=0;j<4;j++)
m1[1][j]=m1[1][j]/pivote;
/*Para
el otro renglón*/
coef=m1[0][1];
for (j=0;j<4;j++)
aux[j]=m1[1][j]*(coef*-1);
for (j=0;j<4;j++)
m1[0][j]=m1[0][j]+aux[j];
//Imprimir la matriz inversa
for (i=0;i<2;i++)
{
for(j=2;j<4;j++)
cout << "t"<<m1[j];
if (j==4)
cout <<"n";
}
}
Este es el de Gauss (soluciona ecuaciones)
#include <iostream>
using namespace std;
int i,j;
float m1[1000][1000], coef, aux[1000], pivote;
int main()
{
cout << "ntBienvenido al Solucionador de ecuaciones 2010n";
for (i=0;i<2;i++)
for (j=0;j<3;j++)
cin >> m1 [j];
//Iteracion 1
/*Pivote*/
pivote=m1[0][0];
for (j=0;j<3;j++)
m1[0][j]=m1[0][j]/pivote;
/*Para
el otro renglón*/
coef=m1[1][0];
for (j=0;j<3;j++)
aux[j]=m1[0][j]*(coef*-1);
for (j=0;j<3;j++)
m1[1][j]=m1[1][j]+aux[j];
/*Para la
iteración 2*/
/*Pivote 2*/
pivote=m1[1][1];
for (j=0;j<3;j++)
m1[1][j]=m1[1][j]/pivote;
/*Para
el otro renglón*/
coef=m1[0][1];
for (j=0;j<3;j++)
aux[j]=m1[1][j]*(coef*-1);
for (j=0;j<3;j++)
m1[0][j]=m1[0][j]+aux[j];
//Imprimir la solución
for (i=0;i<2;i++)
{
cout << "t x ["<<i<<"] "<<m1[2] <<"n";
}
}
GRracias de antemano
-
Ya lo resolvi:
Inversa de una Matriz
#include <iostream>
using namespace std;
int i,j, k, s;
float m1[1000][1000], coef, aux[1000], elemento;
int main()
{
cout << "ntBienvenido al Generador de Matrices Inversasn";
cout << "Por favor introduzca el tamaño de la matrizn";
cin >> k;
for (i=0;i<k;i++)
{
for (j=0;j<k;j++)
{
cout << "Ingrese el valor de [" <<i<<"]["<<j<<"]";
cin >> m1 [j];
}
}
for (i=0;i<k;i++)
for(j=k;j<2*k;j++)
{
if(i==(j-k))
m1[j]=1;
else
m1[j]=0;
}
//Iteraciones
for (s=0;s<k;s++)
{
elemento=m1;
for (j=0;j<2*k;j++)
m1[j]=m1[j]/elemento;
for(i=0;i<k;i++)
{
if (i==s)
;
else
{
coef= m1;
for (j=0;j<2*k;j++)
aux[j]=m1[j]*(coef*-1);
for (j=0;j<2*k;j++)
m1[j]=m1[j]+aux[j];
}
}
}
//Imprimir la matriz inversa
for (i=0;i<k;i++)
{
for(j=k;j<2*k;j++)
cout << "t"<<m1[j];
if (j==k)
cout <<"n";
}
}
Método de Gauss
#include <iostream>
using namespace std;
int i,j,k,l,s;
float m1[1000][1000], coef, aux[1000], elemento;
int main()
{
cout << "ntBienvenido al Solucionador de ecuaciones 2010n";
cout << "Por favor determine el numero de incognitas a resolver: ";
cin >> k;
l=k+1;
for (i=0;i<k;i++)
{
for (j=0;j<l;j++)
{
cout<<"nAhora introduzca los coeficientes de ["<<i<<"]["<<j<<"]";
cin >> m1 [j];
}
}
for (s=0;s<k;s++)
{
elemento=m1;
for (j=0;j<l;j++)
m1[j]=m1[j]/elemento;
for (i=0;i<k;i++)
{
if (i==s)
;
else
{
coef=m1;
for (j=0;j<l;j++)
aux[j]=m1[j]*(coef*-1);
for (j=0;j<l;j++)
m1[j]=m1[j]+aux[j];
}
}
}
//Imprimir las soluciones
for (i=0;i<k;i++)
{
cout << "t x ["<<i<<"] "<<m1[k] <<"n";
}
}
-
no rayes el código
, hay partes que no se entienden
-
no rayes el código
, hay partes que no se entienden
En realidad el no lo rayo a proposito, si te fijas tambien aparece con letra inclinada en algunas partes, simplemente olvido encerrar el codigo, si no lo encierras, entonces los [ s] y los [ i] se convierten a subrayados e inclinados respectivamente.
Si te interesa el codigo, te lo dejo a continuacion correctamente encerrado.
Inversa de una Matriz
#include <iostream>
using namespace std;
int i,j, k, s;
float m1[1000][1000], coef, aux[1000], elemento;
int main()
{
cout << "ntBienvenido al Generador de Matrices Inversasn";
cout << "Por favor introduzca el tamaño de la matrizn";
cin >> k;
for (i=0;i<k;i++)
{
for (j=0;j<k;j++)
{
cout << "Ingrese el valor de [" <<i<<"]["<<j<<"]";
cin >> m1 [i][j];
}
}
for (i=0;i<k;i++)
for(j=k;j<2*k;j++)
{
if(i==(j-k))
m1[i][j]=1;
else
m1[i][j]=0;
}
//Iteraciones
for (s=0;s<k;s++)
{
elemento=m1[s][s];
for (j=0;j<2*k;j++)
m1[s][j]=m1[s][j]/elemento;
for(i=0;i<k;i++)
{
if (i==s)
;
else
{
coef= m1[i][s];
for (j=0;j<2*k;j++)
aux[j]=m1[s][j]*(coef*-1);
for (j=0;j<2*k;j++)
m1[i][j]=m1[i][j]+aux[j];
}
}
}
//Imprimir la matriz inversa
for (i=0;i<k;i++)
{
for(j=k;j<2*k;j++)
cout << "t"<<m1[i][j];
if (j==k)
cout <<"n";
}
}
Método de Gauss
#include <iostream>
using namespace std;
int i,j,k,l,s;
float m1[1000][1000], coef, aux[1000], elemento;
int main()
{
cout << "ntBienvenido al Solucionador de ecuaciones 2010n";
cout << "Por favor determine el numero de incognitas a resolver: ";
cin >> k;
l=k+1;
for (i=0;i<k;i++)
{
for (j=0;j<l;j++)
{
cout<<"nAhora introduzca los coeficientes de ["<<i<<"]["<<j<<"]";
cin >> m1 [i][j];
}
}
for (s=0;s<k;s++)
{
elemento=m1[s][s];
for (j=0;j<l;j++)
m1[s][j]=m1[s][j]/elemento;
for (i=0;i<k;i++)
{
if (i==s)
;
else
{
coef=m1[i][s];
for (j=0;j<l;j++)
aux[j]=m1[s][j]*(coef*-1);
for (j=0;j<l;j++)
m1[i][j]=m1[i][j]+aux[j];
}
}
}
//Imprimir las soluciones
for (i=0;i<k;i++)
{
cout << "t x ["<<i<<"] "<<m1[i][k] <<"n";
}
}
Saludos :)
-
:think:
Hola disculpa necesito ayuda con el código del método de gauss jordan...lo estoy haciendo en Visual Basic 2010...y no se que sucede que no resuelve los sistemas como se debe. Que puedo hacer o en que parte del código fallé?
'Definición de variables y matrices
Dim k, l As Integer
Dim matriz1(1000, 1000) As Single
Dim coef As Single
Dim aux(1000, 1000) As Single
Dim elemento As Single
'Encabezado para el programa
Console.WriteLine("Bienvenido al Solucionador de Ecuaciones")
Console.WriteLine()
'Se pide ingresar las incógnitas que posee el sistema
Console.WriteLine("Determine el numero de incognitas a resolver: ")
k = Console.ReadLine()
l = k + 1
Console.WriteLine()
'Llenamos la matriz ampliada con los coeficientes
Console.WriteLine("Introduzca los Coeficientes de:")
For i As Integer = 0 To k - 1 Step 1
For j As Integer = 0 To l - 1 Step 1
Console.WriteLine("Fila {0} y Columna {1}", i, j)
matriz1(i, j) = Console.ReadLine()
Next j
Next i
'Resolvemos el sistema de ecuaciones
For s As Integer = 0 To k - 1 Step 1
elemento = matriz1(s, s)
For j As Integer = 0 To l - 1 Step 1
matriz1(s, j) = matriz1(s, j) / elemento
Next j
Next s
For i As Integer = 0 To k Step 1
Dim s As Integer
If i = s Then
Else
'Guardamos en la matriz auxiliar
coef = matriz1(i, s)
For j As Integer = 0 To l - 1 Step 1
aux(0, j) = matriz1(s, j) * (coef * -1)
Next j
For j As Integer = 0 To l - 1 Step 1
matriz1(i, j) = matriz1(i, j) + aux(0, j)
Next j
End If
Next i
'Imprimir las soluciones del sistema
For i As Integer = 0 To k - 1 Step 1
Console.WriteLine("X={0} matriz {1,2}", i, matriz1(i, k))
Next i
Console.ReadLine()
-
disculpa amigo, una consulta podria explicarme el codigo como hallaste la inversa ?? si me puedes explicar de manera teorica . muchas gracias