Informatică, întrebare adresată de uev19636, 9 ani în urmă

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 blindseeker90
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.
Alte întrebări interesante