Ayuda con eliminacion gaussiana con pivoteo escalado
Publicado por Enrique (2 intervenciones) el 29/03/2019 03:27:14
Compañeros, necesito de su ayuda URGENTE!!!
Llevo 1 semana tratando de modificar uno de mis programas para que me simule un programa de eliminacion gaussiana con pivoteo escalado. Logre realizar el programa que me hace el pivoteo maximo y quiero hacer el escalado pero no hallo la manera. Alguno podria modificar mi codigo de modo que realize el metodo de escalado?
Les agradeceria su ayuda. Mi codigo es el siguiente (tambien dejo una imagen del algoritmo de pivoteo escalado):
Llevo 1 semana tratando de modificar uno de mis programas para que me simule un programa de eliminacion gaussiana con pivoteo escalado. Logre realizar el programa que me hace el pivoteo maximo y quiero hacer el escalado pero no hallo la manera. Alguno podria modificar mi codigo de modo que realize el metodo de escalado?
Les agradeceria su ayuda. Mi codigo es el siguiente (tambien dejo una imagen del algoritmo de pivoteo escalado):
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(){
int n, n1, i, j, k, l;
float t, ma[10][10], x[10];
printf("Numero de incognitas: ");
scanf("%d", &n);
printf("\nNumero de ecuaciones: ");
scanf("%d", &n1);
if(n!=n1){
printf("No se puede ejecutar el programa. La matriz debe ser cuadratica.\n");
}
else{
printf("\n");
for(i=1;i<=n;i++){//RENGLON
for(j=1;j<=n+1;j++){//COLUMNA
printf("Elemento [%d][%d] de la matriz: ",i,j);
scanf("%f", &ma[i][j]);
}
}
printf("\n\nMatriz ordenada:\n\n");
for(i=1;i<=n;i++){//IMPRIMIR MATRIZ
for(j=1;j<=n+1;j++){
printf("%f ", ma[i][j]);
}
printf("\n");
}
for(k=1;k<=n-1;k++){
int mayor=0;
int fmayor=k;
for(l=k;l<=n;l++){
if(fabs(ma[l][k])>mayor){
mayor = fabs(ma[l][k]);
fmayor = l;
}
}
if(mayor == 0){
printf("El sistema no tiene solucion.\n");
}
else{
if(fmayor != 0){//INTERCAMBIO
for(j=1;j<=n+1;j++){
t = ma[k][j];
ma[k][j] = ma[fmayor][j];
ma[fmayor][j] = t;
}
}
}
for(i=k+1;i<=n;i++){//HACER CEROS COLUMNAS
t = ma[i][k] / ma[k][k];
for (j=k;j<=n+1;j++){
ma[i][j] = ma[i][j] - t * ma[k][j];
}
}
}
printf("\n\nMatriz final:\n\n");
for(i=1;i<=n;i++){//IMPRIMIR MATRIZ FINAL
for(j=1;j<=n+1;j++){
printf("%f ", ma[i][j]);
}
printf("\n");
}
//ENCONTRAR RAICES
x[n]=ma[n][n+1]/ma[n][n];
for(i=n-1;i>=1;i--){
float sum=0;
for(j=n+1;j>i;j--){
sum += ma[i][j] * x[j];
}
x[i] = (ma[i][n+1] - sum) / ma[i][i];
}
printf("\n\nRaices:\n\n");
for(i=n;i>=1;i--){//IMPRIMIR RAICES
printf("X[%d]: %f\n", i, x[i]);
}
printf("\n");
}
return 0;
}
Valora esta pregunta
0