-
Lenguaje
Pascal
-
Descripción
Resuelve sistemas de ecuaciones con el método de Gauss-Jordan.
Por ejemplo para resolver el siguiente sistema de ecuaciones:2x + y - z = 8 -3x - y + 2z = -11 -2x + y + 2z = -3
Ingrese los siguientes datos:
Ingrese el número de ecuaciones (n): 3
Ingrese la literal de la variable 1: x
Ingrese la literal de la variable 2: y
Ingrese la literal de la variable 3: z
Ingrese el coeficiente de la variable 'x' de la ecuación 1: 2
Ingrese el coeficiente de la variable 'y' de la ecuación 1: 1
Ingrese el coeficiente de la variable 'z' de la ecuación 1: -1
Ingrese la constante de la ecuación 1: 8
Ingrese el coeficiente de la variable 'x' de la ecuación 2: -3
Ingrese el coeficiente de la variable 'y' de la ecuación 2: -1
Ingrese el coeficiente de la variable 'z' de la ecuación 2: 2
Ingrese la constante de la ecuación 2: -11
Ingrese el coeficiente de la variable 'x' de la ecuación 3: -2
Ingrese el coeficiente de la variable 'y' de la ecuación 3: 1
Ingrese el coeficiente de la variable 'z' de la ecuación 3: 2
Ingrese la constante de la ecuación 3: -3
Solución:
x = 2
y = 3
z = -1
Presione una tecla para continuar . . .
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
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
{ Co'digo compilado con FreePascal }
{ Este co'digo no es compatible con Turbo Pascal }
program gaussjordan;
uses crt;
var i, j, k, n : integer;
var matriz : array of array of real;
var termino : real;
var literales : string;
var literal : char;
begin
write ('Ingrese el n'#163'mero de ecuaciones (n): ');
readln (n);
setlength (matriz, n, n+1);
literales := '';
for i := 0 to n - 1 do
begin
write ('Ingrese la literal de la variable ', i+1, ': ');
repeat
literal := lowercase (readkey);
until (literal in ['a'..'z', 'A'..'Z']) and (pos (literal, literales) = 0);
literales += literal;
writeln (literal);
end;
for i := 0 to n - 1 do
begin
for j := 0 to n - 1 do
begin
write ('Ingrese el coeficiente de la variable '#39, literales[j+1], #39' de la ecuaci'#162'n ', i+1, ': ');
readln (matriz[i, j]);
end;
write ('Ingrese la constante de la ecuaci'#162'n ', i+1, ': ');
readln (matriz[i, n]);
end;
writeln;
for i := 0 to n - 1 do
begin
if matriz[i, i] = 0.0 then
begin
writeln (stderr, 'Error: divisi'#162'n entre cero.'#10#13);
write ('Presione una tecla para terminar . . . ');
readkey;
exit;
end;
for k := 0 to n - 1 do
if k <> i then
begin
termino := matriz[k, i] / matriz[i, i];
for j := 0 to n do
matriz[k, j] -= termino * matriz[i, j];
end;
end;
writeln ('Soluci'#162'n:'#10#13);
for i := 0 to n - 1 do
begin
termino := matriz[i, n] / matriz[i, i];
writeln (literales[i+1], ' = ', termino:0:6);
end;
write (#10#13'Presione una tecla para terminar . . . ');
readkey;
end.
{ Este co'digo no es compatible con Turbo Pascal }
program gaussjordan;
uses crt;
var i, j, k, n : integer;
var matriz : array of array of real;
var termino : real;
var literales : string;
var literal : char;
begin
write ('Ingrese el n'#163'mero de ecuaciones (n): ');
readln (n);
setlength (matriz, n, n+1);
literales := '';
for i := 0 to n - 1 do
begin
write ('Ingrese la literal de la variable ', i+1, ': ');
repeat
literal := lowercase (readkey);
until (literal in ['a'..'z', 'A'..'Z']) and (pos (literal, literales) = 0);
literales += literal;
writeln (literal);
end;
for i := 0 to n - 1 do
begin
for j := 0 to n - 1 do
begin
write ('Ingrese el coeficiente de la variable '#39, literales[j+1], #39' de la ecuaci'#162'n ', i+1, ': ');
readln (matriz[i, j]);
end;
write ('Ingrese la constante de la ecuaci'#162'n ', i+1, ': ');
readln (matriz[i, n]);
end;
writeln;
for i := 0 to n - 1 do
begin
if matriz[i, i] = 0.0 then
begin
writeln (stderr, 'Error: divisi'#162'n entre cero.'#10#13);
write ('Presione una tecla para terminar . . . ');
readkey;
exit;
end;
for k := 0 to n - 1 do
if k <> i then
begin
termino := matriz[k, i] / matriz[i, i];
for j := 0 to n do
matriz[k, j] -= termino * matriz[i, j];
end;
end;
writeln ('Soluci'#162'n:'#10#13);
for i := 0 to n - 1 do
begin
termino := matriz[i, n] / matriz[i, i];
writeln (literales[i+1], ' = ', termino:0:6);
end;
write (#10#13'Presione una tecla para terminar . . . ');
readkey;
end.