soluzione sistema con kramer-laplace

esci algebraturbo.htm

 

program kramer7;
(* soluzione sistema a tre equazioni con kramer *)
(* calcolo determinanti secondo Laplace *
)

uses crt;
var n:array[1..3,1..4] of real;
d:array[1..16] of real;
s:string;
scelta,T,a,b:integer;
x,y,z:real;

procedure calcola;
begin
clrscr;
s:=' ';
writeln('scrivi i coefficienti e termini noti del sistema');
writeln('se valori con decimali usa punto decimale 5.3 ');
writeln('dopo ogni valore premere enter ');
writeln('------------------');
writeln('a1 b1 c1 n1');
writeln('a2 b2 c2 n1');
writeln('a3 b3 c3 n1');
writeln;
for a:=1 to 3 do
begin
writeln('------------------------');
for b:=1 to 4 do
begin
write('equazione: ',a,' termine n.',b,' = ');readln(n[a,b]);
end;
end;
writeln;
(* calcolo determinante del sistema *)
d[2]:=n[2,2]*n[3,3]-n[3,2]*n[2,3];
d[3]:=-(n[2,1]*n[3,3]-n[3,1]*n[2,3]);
d[4]:=n[2,1]*n[3,2]-n[3,1]*n[2,2];
d[1]:=n[1,1]*d[2]+n[1,2]*d[3]+n[1,3]*d[4];

(* calcolo determinante della incognita x *)
d[5]:=n[2,2]*n[3,3]-n[3,2]*n[2,3];
d[6]:=-(n[2,4]*n[3,3]-n[3,4]*n[2,3]);
d[7]:=n[2,4]*n[3,2]-n[3,4]*n[2,2];
d[8]:=n[1,4]*d[5]+n[1,2]*d[6]+n[1,3]*d[7];

(* calcolo determinante della incognita y *)
d[9]:=n[2,4]*n[3,3]-n[3,4]*n[2,3];
d[10]:=-(n[2,1]*n[3,3]-n[3,1]*n[2,3]);
d[11]:=n[2,1]*n[3,4]-n[3,1]*n[2,4];
d[12]:=n[1,1]*d[9]+n[1,4]*d[10]+n[1,3]*d[11];

(* calcolo determinante della incognita z *)
d[13]:=n[2,2]*n[3,4]-n[3,2]*n[2,4];
d[14]:=-(n[2,1]*n[3,4]-n[3,1]*n[2,4]);
d[15]:=(n[2,1]*n[3,2]-n[3,1]*n[2,2]);
d[16]:=n[1,1]*d[13]+n[1,2]*d[14]+n[1,4]*d[15];

(* stampo risultato calcolo determinanti *)
writeln('determinante sistema ',d[1]:4:3);
writeln('determinante x ',d[8]:4:3);
writeln('determinante y ',d[12]:4:3);
writeln('determinante z ',d[16]:4:3);

(* discussione sistema *)
if d[1]<>0 then
begin
writeln('sistema determinato con soluzioni:');
x:=d[8]/d[1];
y:=d[12]/d[1];
z:=d[16]/d[1];
writeln('X=',x:4:3);
writeln('Y=',y:4:3);
writeln('Z=',z:4:3);
end
else writeln('sistema indeterminato o impossibile');

writeln('-----------------------------------');
writeln('premi 1 per altro calcolo');
writeln('premi 2 per finire');
write('scelta 1 o 2 ? ');readln(scelta);
case scelta of
1:calcola;
2:exit;
end;
end;

begin
clrscr;
calcola;
end.

--------------------------------------------------------------------------------

scrivi i coefficienti e termini noti del sistema
se valori con decimali usa punto decimale 5.3
dopo ogni valore premere enter
------------------
a1 b1 c1 n1
a2 b2 c2 n1
a3 b3 c3 n1

------------------------
equazione: 1 termine n.1 = 1
equazione: 1 termine n.2 = 2
equazione: 1 termine n.3 = 3
equazione: 1 termine n.4 = 4
------------------------
equazione: 2 termine n.1 = 2
equazione: 2 termine n.2 = 3
equazione: 2 termine n.3 = 3
equazione: 2 termine n.4 = 4
------------------------
equazione: 3 termine n.1 =

------------------------
equazione: 3 termine n.1 = 3
equazione: 3 termine n.2 = 4
equazione: 3 termine n.3 = 4
equazione: 3 termine n.4 = 5

determinante sistema -1.000
determinante x 1.000
determinante y -1.000
determinante z -1.000
sistema determinato con soluzioni:
X=-1.000
Y=1.000
Z=1.000
-----------------------------------
premi 1 per altro calcolo
premi 2 per finire


--------------------------------------------------------------------------------

inizio