Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Ilya Rogov                           2:5030/1334.1024 22 Jan 2003  02:29:05
 To : Juriy Tikhomirov
 Subject : решение системы уравнений
 -------------------------------------------------------------------------------- 
 
  Давным-давно, 20 Jan 03 02:54, когда земля была ещё тёпленькая
  и по ней бегали мамонты, Juriy Tikhomirov и All говорили про решение системы
 уравнений:
 
  JT> никто не может рассказать о способе решения системы линейных уравнений
  JT> от Гаусса-Зейдера (или как-то так). что такое "метод Гаусса", я знаю,
  JT> меня интереснует именно вышеприведенная фигня. если есть экзампель
  JT> проги - это кул, но желательно пояснить. (пс: а если есть эффективная
  JT> реализация метода Гаусса - тоже давайте!:)
 
  JT> заранее большое фидошное спасибо :)
 
    Я знаю про метод Гаусса-Зейделя. Вот он:
 
 === Как писал великий Я в zeid.pas ===
 program zeidel;
 
 uses crt;
 
 const
      n = 4;
 
      A : array [1..n,1..n] of real =
                ((50,2,3,4),
                 (2,40,6,8),
                 (3,6,90,2),
                 (5,0,5,10));
    err = 1.0e-07;
 
    B : array [1..4] of real = (1, 1, 1, 1);
    outname = 'zeid.out';
 
 var
    i,j       : integer;
    sum,zzz   : real;
    out       : text;
    flag      : boolean;
    Al        : array [1..n,1..n] of real;
    Be        : array [1..n] of real;
    x         : array [1..n] of real;
    xp        : array [1..n] of real;
 
 Begin
      clrscr;
      assign(out,outname);
      rewrite(out);
      flag:=false;
 
      for i:= 1 to n do if (A[i,i]=0) then
                                          begin
                                               writeln('Error!!! Diagonal element
 is equal to zero !!');
                                               close(out);
                                               halt;
                                          end;
      for i:=1 to n do for j:=1 to n do
                                       begin
                                            if i<>j then Al[i,j]:=-A[i,j]/A[i,i]
                                            else Al[i,j]:=0;
                                       end;
 
      for i:=1 to n do
                      begin
                           Be[i]:=B[i]/A[i,i];
                           x[i] :=B[i];
                      end;
 
      repeat
            begin
                 for i:=1 to n do begin
                                       xp[i]:=x[i];
                                       write(out,x[i]:12:9,' ');
                                  end;
 
                 writeln(out);
 
                 for i:=1 to n do
                                 begin
                                      sum:=0;
                                      for j:=1 to n do sum:=sum+Al[i,j]*x[j];
                                      x[i]:=Be[i]+sum;
                                 end;
                 zzz:=abs(x[1]-xp[1]);
                 for i:=2 to n do if (abs(x[i]-xp[i])>zzz) then
 zzz:=abs(x[i]-xp[i]);
                 if zzz<err then flag:=true;
            end;
      until flag;
 
      close(out);
 
 end. === (загробным голосом) ЭТО КОЕЦ !!! ===
 
    Только вот писал давно, поэтому математики метода не помню, но помню, что
 прога рабочая, ибо была сдана.
 
  JT> pps: какие однозначные признаки есть для ситуаций "корней дофига" и
  JT> "корней нет"?
 
    Простой признак
      Ax=B, A - NxN матрица.
      if detA=0 then корней бесконечно много.
      if detA<>0 and B=0 then единственное решение - X=0
      Во всех остальных случаях есть ровно N корней (возможно одинаковых).
 
                                                         Ilya Rogov
 ... Бредить помогали вопли моих соседей
 ---
  * Origin: Когда Бог делал время - он сделал его достаточно (2:5030/1334.1024)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 решение системы уравнений   Juriy Tikhomirov   20 Jan 2003 03:54:22 
 Re: решение системы уравнений   Maxim Balagansky   20 Jan 2003 11:43:32 
 решение системы уравнений   Andrew Kuksov   20 Jan 2003 17:49:20 
 решение системы уравнений   Ilya Rogov   22 Jan 2003 02:46:19 
 Re: решение системы уравнений   Ivan Boldyrev   22 Jan 2003 10:38:34 
 решение системы уравнений   Andrew Kuksov   22 Jan 2003 14:22:18 
 решение системы уравнений   Juriy Tikhomirov   22 Jan 2003 02:23:36 
 решение системы уравнений   Andrew Kuksov   22 Jan 2003 14:25:08 
 RE: pешение системы уpавнений   Kropov Valentine   30 Jan 2003 00:45:07 
 решение системы уравнений   Ilya Rogov   22 Jan 2003 02:29:05 
 решение системы уравнений   Eugene Belogurov   21 Jan 2003 18:51:35 
Архивное /ru.algorithms/207143e2df4e0.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional