Limbajul de programare: PASCAL
Tema: Rezolvare sisteme de 3 ecuatii.
Date de intrare:
-coeficientii unui sistem de 3 ecuatii cu 3 necunoscute.
Calcule:
-rezolvarea sistemului de ecuatii prin metoda determinantilor.
Date de iesire:
-datele initiale
-rezultatele
Demonstratia se va face pentru cel putin 3 sisteme diferite, din care unul nedeterminat.
stassahul:
Exemplu?!
Răspunsuri la întrebare
Răspuns de
3
program Tema;
//tip matrice cu 3 linii si coloane, si o coloana
type mat3=array[1..3,1..3] of real;
col=array[1..3,1..2] of real;
//variabile globale
var
mat_coef,mat_rez:mat3;
rez,sol:col;
fisierIntrare:string;
tfIn:Text;
//citire valori din fisier
//mai intai este matricea de coeficienti
//apoi este un vector coloana cu valorile respective
//Pentru sistemul
//2x-3y+z=-9
//5x-2y+2z=-5
//x+y+3z=-2
//Atunci fisierul text va fi de forma
//
//2 -3 1
//5 -2 2
//1 1 3
//-9
//-5
//-2
procedure citire(nume:string);
var i,j:integer;
begin
AssignFile(tfIn,nume);
reset(tfIn);
for i:=1 to 3 do
for j:=1 to 3 do
read(tfIn,mat_coef[i,j]);
for i:=1 to 3 do
read(tfIn,rez[i,1]);
close(tfIn);
end;
//procedura de afisare a unei matrici cu 3x3 dimensiuni
procedure afiseaza(m:mat3);
var i,j:integer;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
write(m[i,j],' ');
writeln;
end;
end;
//calcul determinant matrice
function detmat3(m:mat3):real;
begin
detmat3:=m[1,1]*(m[2,2]*m[3,3]-m[2,3]*m[3,2])-m[1,2]*(m[2,1]*m[3,3]-m[2,3]*m[3,1])+m[1,3]*(m[2,1]*m[3,2]-m[2,2]*m[3,1]);
end;
//procedura gasire solutie unica a sistemului
procedure detsolutii;
var i,j,k:integer;
det:real;
m:mat3;
begin
//gasim determinant matricea coeficientilor
det:=detmat3(mat_coef);
//daca determinantul respectiv este 0, atunci este incompatibil sau are solutie nedet
if det=0 then
begin
writeln('Sistemul este incompatibil sau are solutie nedeterminata');
exit
end
else
begin
writeln('Sistemul are solutie unica:');
//pentru fiecare dintre solutii
for k:=1 to 3 do
begin
//formamm matricea noua inlocuind coloana solutiei cu coloana rezultatelor
for i:=1 to 3 do
for j:=1 to 3 do
if j=k then
m[i,k]:=rez[i,1]
else
m[i,j]:=mat_coef[i,j];
//afiseaza(m)
//writeln(detmat3(m));
//solutia respectiva este determinantul matricei formate cu determinantul matricei coeficientilor
sol[k,1]:=detmat3(m)/det;
writeln('x',k,'=',sol[k,1]);
end;
end;
end;
var i,j:integer;
begin
fisierIntrare:='coeficienti.txt';
citire(fisierIntrare);
detsolutii;
end.
//tip matrice cu 3 linii si coloane, si o coloana
type mat3=array[1..3,1..3] of real;
col=array[1..3,1..2] of real;
//variabile globale
var
mat_coef,mat_rez:mat3;
rez,sol:col;
fisierIntrare:string;
tfIn:Text;
//citire valori din fisier
//mai intai este matricea de coeficienti
//apoi este un vector coloana cu valorile respective
//Pentru sistemul
//2x-3y+z=-9
//5x-2y+2z=-5
//x+y+3z=-2
//Atunci fisierul text va fi de forma
//
//2 -3 1
//5 -2 2
//1 1 3
//-9
//-5
//-2
procedure citire(nume:string);
var i,j:integer;
begin
AssignFile(tfIn,nume);
reset(tfIn);
for i:=1 to 3 do
for j:=1 to 3 do
read(tfIn,mat_coef[i,j]);
for i:=1 to 3 do
read(tfIn,rez[i,1]);
close(tfIn);
end;
//procedura de afisare a unei matrici cu 3x3 dimensiuni
procedure afiseaza(m:mat3);
var i,j:integer;
begin
for i:=1 to 3 do
begin
for j:=1 to 3 do
write(m[i,j],' ');
writeln;
end;
end;
//calcul determinant matrice
function detmat3(m:mat3):real;
begin
detmat3:=m[1,1]*(m[2,2]*m[3,3]-m[2,3]*m[3,2])-m[1,2]*(m[2,1]*m[3,3]-m[2,3]*m[3,1])+m[1,3]*(m[2,1]*m[3,2]-m[2,2]*m[3,1]);
end;
//procedura gasire solutie unica a sistemului
procedure detsolutii;
var i,j,k:integer;
det:real;
m:mat3;
begin
//gasim determinant matricea coeficientilor
det:=detmat3(mat_coef);
//daca determinantul respectiv este 0, atunci este incompatibil sau are solutie nedet
if det=0 then
begin
writeln('Sistemul este incompatibil sau are solutie nedeterminata');
exit
end
else
begin
writeln('Sistemul are solutie unica:');
//pentru fiecare dintre solutii
for k:=1 to 3 do
begin
//formamm matricea noua inlocuind coloana solutiei cu coloana rezultatelor
for i:=1 to 3 do
for j:=1 to 3 do
if j=k then
m[i,k]:=rez[i,1]
else
m[i,j]:=mat_coef[i,j];
//afiseaza(m)
//writeln(detmat3(m));
//solutia respectiva este determinantul matricei formate cu determinantul matricei coeficientilor
sol[k,1]:=detmat3(m)/det;
writeln('x',k,'=',sol[k,1]);
end;
end;
end;
var i,j:integer;
begin
fisierIntrare:='coeficienti.txt';
citire(fisierIntrare);
detsolutii;
end.
Alte întrebări interesante
Limba română,
8 ani în urmă
Biologie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă