Código de C/Visual C - Resolución de matrices de nxn a través del método gaussiano

Resolución de matrices de nxn a través del método gaussianográfica de visualizaciones


C/Visual C

estrellaestrellaestrellaestrellaestrella(5)
Publicado el 11 de Diciembre del 2002 por Oliver Mar Ramirez
28.652 visualizaciones desde el 11 de Diciembre del 2002. Una media de 42 por semana
Programa que resuelve matricez de nxn dimenciones a través del método de eliminación gaussiana, y sustitución hacia atrás, muestra el valor de las
incognitas y el determinante de la matriz. Hecho en turbo c++ 3.0 de borland.

Versión 1
estrellaestrellaestrellaestrellaestrella(5)

Publicado el 11 de Diciembre del 2002gráfica de visualizaciones de la versión: Versión 1
28.653 visualizaciones desde el 11 de Diciembre del 2002. Una media de 42 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*Programa que resuelve matricez de nxn dimenciones a travez del metodo de 
eliminacion gaussiana, y sustitucion hacia atras, muestra el valor de las 
incognitas y el determinante de la matriz.
Hecho en turbo c++ 3.0 de borland.

Por Oliver Mar Ramirez.

*/
 
#include <math.h>
#include <malloc.h>
#include <conio.h>
#include <stdio.h>
 
float **A;
int N;
 
void eliminacion()
{
	int i, j, k, max;
	float t;
	for(i=0;i<N;i++){
		max=i;
		for(j=i+1;j<N;j++) if( fabs(A[j][i])> fabs(A[max][i]) ) max=j;
		for(k=0;k<N;k++)
		{
			t=A[i][k];
			A[i][k]=A[max][k];
			A[i][k]=t;
		}
		for(j=i+1;j<N;j++)
		for(k=N;k>=i;k--)
			A[j][k]-=A[i][k]*A[j][i]/A[i][i];
	}
}
 
 
 
void sustitucion()
{
	int j,k;
	float t, *x;
	x=(float*)malloc(sizeof(float)*N);
	for(j=0;j<N;j++) x[j]=A[j][N+1];
	for(j=N-1;j>=0;j--){
		t=0.0;
		for(k=j+1;k<N;k++)
		t+=A[j][k]*x[k];
		x[j]=(A[j][N]-t)/A[j][j];
	}
	printf("Las variables son:\n");
	for(j=0;j<N;j++)
	printf("%c = %f\n",'A'+j,x[j]);
}
 
void ponme()
{
	for(int L='A',i=0;i<N;i++) printf("%c%13c", L++, ' ');
	printf("\b\b\b\b\b\b| R\n");
	for(i=0;i<N;i++){
		for(int k=1, j=0;j<N+1;j++,k++){
			printf("%.2f",A[i][j]);
			gotoxy(13*k, wherey());
			if(j+1==N) printf("\b\b| ");
		}
		printf("\n");
	}
	printf("\n");
}
 
void lectura()
{
	int i, j, L='A';
	printf("Cuantas Variables tendra el sistema?\t[ ]\b\b\b");
	scanf("%d",&N);
	for(i=0;i<N;i++) printf("%c%7c", L++, ' '); printf("\b\b| R\n");
	A=(float **)malloc(sizeof(float)*N+1);
	for(i=0;i<N+1;i++) A[i]=(float *)malloc(sizeof(float)*N+1);
	for(i=0;i<N+1;i++) for(j=0;j<N+1;j++) A[i][j]=0;
	for(i=0;i<N;i++)
	{ //filas -> ecuaciones
		for(int k=1,j=0;j<=N;j++, k++)
		{ //columnas -> variables
			scanf("%f",&A[i][j]);
			gotoxy(wherex()+8*k, wherey()-1);
			if(j+1==N) printf("\b\b| ");
		}
		printf("\n");
	}
	printf("\n\n");
}
 
void determinante()
{
	float det=1;
	for(int i=0;i<N;i++)
	det*=A[i][i];
	printf("Determinante = %.3f\n", det);
}
 
void main()
{
	clrscr();
	lectura();
	ponme();
	eliminacion();
	ponme();
	sustitucion();
	determinante();
	getch();
}



Comentarios sobre la versión: Versión 1 (5)

pedraza
16 de Noviembre del 2004
estrellaestrellaestrellaestrellaestrella
Tu programa está bien chingón. Gracias!!
Nota: solo te falta declarar la variable i de tipo int en una función void "ponme".

Me sirvió mucho.
Responder
Márquez
16 de Noviembre del 2004
estrellaestrellaestrellaestrellaestrella
esta interesante tu codigo si puedes mandame explicaciones del desarrollo.
Responder
jackson
19 de Julio del 2005
estrellaestrellaestrellaestrellaestrella
este programa esta bien, tiene un error en el primer FOR que te presento despues de los PRINTF.
for(int L='A',i=0;i<N;i++)
printf("%c%13c", L++, ' ');
printf("\b\b\b\b\b\b| R\n");
for(int i=0;i<N;i++){
for(int k=1, j=0;j<N+1;j++,k++){
printf("%.2f",A[i][j]);
Responder
oscar
27 de Octubre del 2005
estrellaestrellaestrellaestrellaestrella
muy bueno envia mas de estos codigos por fa
Responder
Nett Imar
23 de Noviembre del 2007
estrellaestrellaestrellaestrellaestrella
no me funciona para matrices de 8x8 y de hay en adelante
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s386