alguien que tenga los metodos de gauss
Si alguien tiene los metodos de eliminacin de gauss, gauss-jordan, gauss-seidel por favor urgente. Gracias
//METODO DE GAUSS_SEIDEL
# include <stdio.h>
# include <conio.h>
# include <math.h>
void marco();
main(void)
{
float A[10][11];
float X[10];
float Y[10];
float Z[10];
float sum,suma,T,tol,x1,x2;
int a,i,j,k,l,m,n,nx,co,re,c1,c2,row,pi,Vtol;
char op;
do{
for(re=0;re<10;re++)
{
X[re]=0;
Y[re]=0;
Z[re]=0;
}
for(re=0;re<10;re++)
{
for(co=0;co<11;co++)
{
A[re][co]=0;
}
}
clrscr();
marco();
gotoxy(25,3); printf("MTODO DE 'GAUSS-SEIDEL'");
gotoxy(10,5); printf("Renglones: "); scanf("%d",&re);
gotoxy(30,5); printf("Columnas: "); scanf("%d",&co);
if(co!=re) {
gotoxy(10,8); printf("La Matriz No Es Cuadrada");
row=2; goto fin2;
}
row=0;
for(c1=0;c1<re;c1++) {
pi=0;
for(c2=0;c2<co+1;c2++) {
gotoxy(50,5); printf("Teclea...A[%d][%d] ",c1,c2);
gotoxy(10+pi,7+row);
scanf("%f",&A[c1][c2]); pi+=9;
}
row+=2;
}
/****************************************************************************/
/* Se inicia la generacion de los valores de X(i) */
for (i=0; i<re; i++)
{
X[i] = A[i][re]/A[i][i];
}
a = 0;
/* Se inicia el ciclo para hacer el calculo de los nuevos valores de X */
do
{
a = a+1;
for(i=0;i<re;i++)
{
suma = 0;
m = 0;
do
{
if (m==i)
{
m = m+1;
}
suma = suma + A[i][m]*X[m];
m = m+1;
if ((i == (re-1)) && (m == (re-1)))
{
m = m+1;
}
} while (m<re);
Y[i] = X[i];
X[i] = (A[i][re]-suma)/A[i][i];
}
/* Se comparan los valores de X's para que cumpla la tolerancia */
for (i=0; i<re; i++)
{
Z[i] = fabs(X[i]-Y[i]);
}
/* Se compara la tolerancia para cada valor del vector soluci¢n */
Vtol = 0;
for (i=0; i<re; i++)
{
if (Z[i] <= 0.001)
{
Vtol = Vtol+1;
}
}
} while (Vtol<=(re-1));
/****************************************************************************/
/* Se imprimen los valores del vector soluci¢n */
for(co=0;co<re;co++)
{
gotoxy(10,16+co);printf("El resultado de X[%d] = %fn",co,X[co]);
}
gotoxy(10,20);printf("En la iteracion No. %d",a);
/* Se termina de imprimir el vector soluci¢n */
/****************************************************************************/
fin2:
gotoxy(15,22); printf("¨Desea realizar otra operaci¢n? [s/n] ");
op=getche();
}while (op!='n');
clrscr();
}
/****************************************************************************/
void marco()
{
int i,j;
textcolor(2);
clrscr();
for (i=2; i<81; i++)
{
gotoxy(i,1); printf("Û");
gotoxy(i,24); printf("Û");
}
for (i=1; i<25; i++)
{
gotoxy(1,i); printf("ÛÛ");
gotoxy(79,i); printf("ÛÛ");
}
}
//METODO DE GAUSS_JORDAN
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#define N 20
int gauss_jordan (double a[N][N] , double b[N], double x[N], int n, double eps)
{
double m[N][N+1]; //matriz de orden N
double f; //cantidad de veces que se resta una fila a otra
double max; //para buscar pivote
double t; //auxiliar
int i, j, k, r; //contadores
// llenado de la matriz
i=0; //filas
while (i<n) { //analiza las filas
j=0; //columnas
while (j<n) { //analiza las columnas
m[i][j]=a[i][j];
j++;
}
m[i][n]=b[i];
i++;
}
//dejado de pivotes distintos de cero
i=0;
while (i<n){
max=-1.0;
k=i;
while (k<n){ //busca el pivote de abajo
if (fabs (m[k][i])>max){
max=fabs (m[k][i]);
r=k;
//si termina la busqueda intercambia la fila
}
k++;
}
if (max<=eps)
//si el pivote es 0 el sistema no tiene solucion o tiene infinidad de soluciones
return 0;
if (r!=i){ //se encontr¢ el pivote
k=i; //intercambio de filas
while (k<=n){
t=m[i][k];
m[i][k]=m[r][k];
m[r][k]=t;
k++;
}
}
//se cambia solo a la derecha de la columna
//se cambia solo a la izquierda si hay ceros
j=0;
while (j<n){
if (j!=i){
f=m[j][i]/m[i][i];
k=i;
while (k<=n){
m[j][k]=m[j][k]-f*m[i][k];
k++;
}
}
j++;
}
i++;
}
i=0;
while (i<n){
x[i]=m[i][n]/m[i][i];
printf("nt La solucion x%d es: %lfn", i, x[i]);
i++;
}
return 1;
}
int main(void)
{
textcolor(0);
textbackground(5);
int n,i, j, k, si_sol;
double tol,a[N][N], b[N], x[N];
clrscr();
gotoxy(30,2);printf("Metodo de GAUSS-JORDANn");
printf ("ntIngrese una Matriz Cuadrada de orden N:");
scanf ("%d", &n);
printf ("ntIngrese una tolerancia para el cero:");
scanf ("%lf", &tol);
i=0;
while (i<n){
printf ("nntEcuacion # %d:n", (i+1));
j=0;
while (j<n){
printf ("ntIngrese el coeficiente de la");
printf ("Incognita x%d:", j);
scanf ("%lf", &a[i][j]);
j++;
}
i++;
}
k=0;
while (k<n){
printf ("ntnIngrese el resultado de la ecuacion # %d:", k+1);
scanf ("%lf", &b[k]);
k++;
}
si_sol= gauss_jordan(a, b, x, n, tol);
if (si_sol=0){
printf("nt El sistema no tiene solucion o tiene");
printf ("infinidad de solucionesn");
}
getch();
return EXIT_SUCCESS;
}
# include <stdio.h>
# include <conio.h>
# include <math.h>
void marco();
main(void)
{
float A[10][11];
float X[10];
float Y[10];
float Z[10];
float sum,suma,T,tol,x1,x2;
int a,i,j,k,l,m,n,nx,co,re,c1,c2,row,pi,Vtol;
char op;
do{
for(re=0;re<10;re++)
{
X[re]=0;
Y[re]=0;
Z[re]=0;
}
for(re=0;re<10;re++)
{
for(co=0;co<11;co++)
{
A[re][co]=0;
}
}
clrscr();
marco();
gotoxy(25,3); printf("MTODO DE 'GAUSS-SEIDEL'");
gotoxy(10,5); printf("Renglones: "); scanf("%d",&re);
gotoxy(30,5); printf("Columnas: "); scanf("%d",&co);
if(co!=re) {
gotoxy(10,8); printf("La Matriz No Es Cuadrada");
row=2; goto fin2;
}
row=0;
for(c1=0;c1<re;c1++) {
pi=0;
for(c2=0;c2<co+1;c2++) {
gotoxy(50,5); printf("Teclea...A[%d][%d] ",c1,c2);
gotoxy(10+pi,7+row);
scanf("%f",&A[c1][c2]); pi+=9;
}
row+=2;
}
/****************************************************************************/
/* Se inicia la generacion de los valores de X(i) */
for (i=0; i<re; i++)
{
X[i] = A[i][re]/A[i][i];
}
a = 0;
/* Se inicia el ciclo para hacer el calculo de los nuevos valores de X */
do
{
a = a+1;
for(i=0;i<re;i++)
{
suma = 0;
m = 0;
do
{
if (m==i)
{
m = m+1;
}
suma = suma + A[i][m]*X[m];
m = m+1;
if ((i == (re-1)) && (m == (re-1)))
{
m = m+1;
}
} while (m<re);
Y[i] = X[i];
X[i] = (A[i][re]-suma)/A[i][i];
}
/* Se comparan los valores de X's para que cumpla la tolerancia */
for (i=0; i<re; i++)
{
Z[i] = fabs(X[i]-Y[i]);
}
/* Se compara la tolerancia para cada valor del vector soluci¢n */
Vtol = 0;
for (i=0; i<re; i++)
{
if (Z[i] <= 0.001)
{
Vtol = Vtol+1;
}
}
} while (Vtol<=(re-1));
/****************************************************************************/
/* Se imprimen los valores del vector soluci¢n */
for(co=0;co<re;co++)
{
gotoxy(10,16+co);printf("El resultado de X[%d] = %fn",co,X[co]);
}
gotoxy(10,20);printf("En la iteracion No. %d",a);
/* Se termina de imprimir el vector soluci¢n */
/****************************************************************************/
fin2:
gotoxy(15,22); printf("¨Desea realizar otra operaci¢n? [s/n] ");
op=getche();
}while (op!='n');
clrscr();
}
/****************************************************************************/
void marco()
{
int i,j;
textcolor(2);
clrscr();
for (i=2; i<81; i++)
{
gotoxy(i,1); printf("Û");
gotoxy(i,24); printf("Û");
}
for (i=1; i<25; i++)
{
gotoxy(1,i); printf("ÛÛ");
gotoxy(79,i); printf("ÛÛ");
}
}
//METODO DE GAUSS_JORDAN
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#define N 20
int gauss_jordan (double a[N][N] , double b[N], double x[N], int n, double eps)
{
double m[N][N+1]; //matriz de orden N
double f; //cantidad de veces que se resta una fila a otra
double max; //para buscar pivote
double t; //auxiliar
int i, j, k, r; //contadores
// llenado de la matriz
i=0; //filas
while (i<n) { //analiza las filas
j=0; //columnas
while (j<n) { //analiza las columnas
m[i][j]=a[i][j];
j++;
}
m[i][n]=b[i];
i++;
}
//dejado de pivotes distintos de cero
i=0;
while (i<n){
max=-1.0;
k=i;
while (k<n){ //busca el pivote de abajo
if (fabs (m[k][i])>max){
max=fabs (m[k][i]);
r=k;
//si termina la busqueda intercambia la fila
}
k++;
}
if (max<=eps)
//si el pivote es 0 el sistema no tiene solucion o tiene infinidad de soluciones
return 0;
if (r!=i){ //se encontr¢ el pivote
k=i; //intercambio de filas
while (k<=n){
t=m[i][k];
m[i][k]=m[r][k];
m[r][k]=t;
k++;
}
}
//se cambia solo a la derecha de la columna
//se cambia solo a la izquierda si hay ceros
j=0;
while (j<n){
if (j!=i){
f=m[j][i]/m[i][i];
k=i;
while (k<=n){
m[j][k]=m[j][k]-f*m[i][k];
k++;
}
}
j++;
}
i++;
}
i=0;
while (i<n){
x[i]=m[i][n]/m[i][i];
printf("nt La solucion x%d es: %lfn", i, x[i]);
i++;
}
return 1;
}
int main(void)
{
textcolor(0);
textbackground(5);
int n,i, j, k, si_sol;
double tol,a[N][N], b[N], x[N];
clrscr();
gotoxy(30,2);printf("Metodo de GAUSS-JORDANn");
printf ("ntIngrese una Matriz Cuadrada de orden N:");
scanf ("%d", &n);
printf ("ntIngrese una tolerancia para el cero:");
scanf ("%lf", &tol);
i=0;
while (i<n){
printf ("nntEcuacion # %d:n", (i+1));
j=0;
while (j<n){
printf ("ntIngrese el coeficiente de la");
printf ("Incognita x%d:", j);
scanf ("%lf", &a[i][j]);
j++;
}
i++;
}
k=0;
while (k<n){
printf ("ntnIngrese el resultado de la ecuacion # %d:", k+1);
scanf ("%lf", &b[k]);
k++;
}
si_sol= gauss_jordan(a, b, x, n, tol);
if (si_sol=0){
printf("nt El sistema no tiene solucion o tiene");
printf ("infinidad de solucionesn");
}
getch();
return EXIT_SUCCESS;
}
si no es mucha molestia a mi tambien me gustaría tener los metodos alguien me los puede mandar. si alguien tiene en algun programa Visual mucho mejor.
saludos Eli
saludos Eli
