Решение СЛАУ методом Гаусса и Зейделя.

Тема в разделе "Delphi - Базы данных", создана пользователем Anti, 14 май 2010.

Статус темы:
Закрыта.
  1. Anti

    Anti Гость

    Нужно написать программу для решения систем линейных алгебраических уравнений методом Гаусса и Зейделя. Исходный текст задания с описанием решения прикрепил в теме. Но то, что там написано, я не смог понять. Пришлось разбираться самому, разобрался и написал только для Гаусса:
    Код (Text):
    uses crt;
    const
    n=4;
    var
    i,j:byte;
    A: array [1..n,1..n] of real;
    x: array [1..n] of real;
    b: array [1..n] of real;
    f:text;


    Procedure InitMass;
    Begin
    A[1,1]:=1; A[1,2]:=7; A[1,3]:=3; A[1,4]:=4;
    A[2,1]:=2; A[2,2]:=3; A[2,3]:=8; A[2,4]:=2;
    A[3,1]:=8; A[3,2]:=1; A[3,3]:=1; A[3,4]:=3;
    A[4,1]:=5; A[4,2]:=2; A[4,3]:=4; A[4,4]:=2;

    {A[1,1]:=1; A[1,2]:=2; A[1,3]:=1; A[1,4]:=1; A[1,5]:=1; A[1,6]:=1;
    A[2,1]:=2; A[2,2]:=1; A[2,3]:=1; A[2,4]:=1; A[2,5]:=1; A[2,6]:=1;
    A[3,1]:=1; A[3,2]:=1; A[3,3]:=1; A[3,4]:=2; A[3,5]:=1; A[3,6]:=1;
    A[4,1]:=1; A[4,2]:=1; A[4,3]:=2; A[4,4]:=1; A[4,5]:=1; A[4,6]:=3;
    A[5,1]:=1; A[5,2]:=3; A[5,3]:=1; A[5,4]:=1; A[5,5]:=1; A[5,6]:=1;
    A[6,1]:=1; A[6,2]:=1; A[6,3]:=2; A[6,4]:=1; A[6,5]:=1; A[6,6]:=2;}

    {A[1,1]:=10; A[1,2]:=10;
    A[2,1]:=7; A[2,2]:=7;}

    b[1]:=3;     b[2]:=5;    b[3]:=2;    b[4]:=2;
    End;






    Procedure MatrixOut;
    var
    x,y:byte;
    Begin
    for x:=1 to n do begin
    for y:=1 to n do write(A[x,y]:10:10,' ');
    if y=n then write('=',b[x]:10:10);
    writeln;
    end;
    writeln('________________________');
    End;

    Procedure Gauss;
    var
    k:integer;
    h:real;
    Begin                                                             {прямой ход}
    for i:=1 to n-1 do for j:=i+1 to n do begin
    a[j,i]:=-a[j,i]/a[i,i];
    for k:=i+1 to n do
    a[j,k]:=a[j,k]+a[j,i]*a[i,k];
    b[j]:=b[j]+a[j,i]*b[i];
    end;
    x[n]:=b[n]/a[n,n];
    {обратный ход}

    for i:=n-1 downto 1 do begin
    h:=b[i];
    for j:=i+1 to n do h:=h-x[j]*a[i,j];
    x[i]:=h/a[i,i];
    end;
    writeln('Korni:');
    for i:=1 to n do writeln('x(',i,')=',x[i]:10:10);
    End;

    BEGIN
    clrscr;
    InitMass;
    MatrixOut;
    Gauss;
    Readln;
    END.
    Для Зейделя не смог ни понять, не найти что-то вменяемое (может я и тупой или искать не умею), все исходники, какие видел, на С, но я этот язык совсем не знаю. Поэтому, огромная просьба, объясните как этот метод вообще осуществить, что за чем должно идти (алгоритм короче говоря). Заранее благодарен.
     

    Вложения:

Загрузка...
Похожие Темы - Решение СЛАУ методом
  1. Krex
    Ответов:
    0
    Просмотров:
    1.477
  2. Krex
    Ответов:
    1
    Просмотров:
    1.576
  3. paxac
    Ответов:
    0
    Просмотров:
    47
  4. aameno2
    Ответов:
    0
    Просмотров:
    222
  5. Даниил
    Ответов:
    0
    Просмотров:
    820
Статус темы:
Закрыта.

Поделиться этой страницей