Показать сообщение отдельно
Старый 10.06.2011, 21:43   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Задача N2:
Код:
Const
 A0:Array[1..5,1..5] of Real=((  7.8,  0.1,  2.5,  3.4,  0.8),
                              (  2.3,-10.8,  1.8,  2.1,  2.6),
                              (  4.5,  2.3,  9.8,  2.7,  0.3),
                              (  0.2,  0.4,  1.7,  2.5,  0.2),
                              (  2.5,  0.3,  0.2,  2.5,  5.5));
 B0:Array[1..5] of Real=(38.493,  8.085, 58.74, 19.581, 47.052);

VAR
 i,j,k,m:Integer;
 Dummy,R:Real;
 A:Array[1..5,1..5] of Real;
 B:Array[1..5] of Real;

BEGIN
 A:=A0;
 B:=B0;
 For i:=1 to 5 do
  begin
   For j:=1 to 5 do write(A[i,j]:6:2,'*x',j,' + ');
   Writeln(' = ',B[i]:6:3);
  end;
 writeln;

 For k:=1 to 5 do
  begin
   If A[k,k]=0 then
    begin
     m:=k;
     repeat
      Inc(m);
     until A[m,k]<>0;
     For j:=1 to 5 do
      begin
       Dummy:=A[k,j];
       A[k,j]:=A[m,j];
       A[m,j]:=Dummy;
      end;
     Dummy:=B[k];
     B[k]:=B[m];
     B[m]:=Dummy;
    end;
   For i:=k to 5 do
    begin
     R:=A[i,k];
     If R<>0 then
      begin
       For j:=k to 5 do
        A[i,j]:=A[i,j]/R;
       B[i]:=B[i]/R;
      end;
    end;
   For i:=k+1 to 5 do
    If A[i,k]=1 then
     begin
      For j:=k to 5 do
       A[i,j]:=A[k,j]-A[i,j];
      B[i]:=B[k]-B[i];
     end;
  end;

 For i:=5 downto 1 do
  For j:=5 downto i+1 do
   B[i]:=B[i]-B[j]*A[i,j];

 Writeln('The result and its testing:');

 For i:=1 to 5 do
  begin
   Dummy:=0;
   For j:=1 to 5 do
    Dummy:=Dummy+B[j]*A0[i,j];
   Writeln('x[',i,']= ',B[i]:6:3,'    Sum= ',Dummy:6:3,'   B[',i,']= ',B0[i]:6:3);
  end;
 Readln
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070