Решение СЛАУ методом Зайделя и методом простой итерации

Автор работы: Пользователь скрыл имя, 17 Апреля 2014 в 05:34, лабораторная работа

Краткое описание

Цель работы:
1. Решить систему линейных алгебраических уравнений методом простой итерации и методом Зайделя с заданной точностью ε.
2. Решить нелинейное уравнение с одним неизвестным:
a. Методом полвинного деления;
b. Методом касательных;
c. Методом хорд.

Прикрепленные файлы: 1 файл

ЧММ_лаб_1.doc

— 95.00 Кб (Скачать документ)

ФЕДЕРАЛЬНОЕ АГЕНСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«ОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ»

(ОмГУПС (ОмИИТ))

Кафедра «Инфокоммуникационные системы и информационная безопасность»

 

 

Лабораторная работа

«Решение СЛАУ методом Зайделя и методом простой итерации»

 

Выполнила: студентка гр. 12ж

Волкова Н. В.

Проверил: Епифанцева М.Я.

 

Цель работы:

  1. Решить систему линейных алгебраических уравнений методом простой итерации и методом Зайделя с заданной точностью ε.
  2. Решить нелинейное уравнение с одним неизвестным:
    1. Методом полвинного деления;
    2. Методом касательных;
    3. Методом хорд;

 

Система линейных алгебраических уравнений

 

Дано:

Условие сходимости для данной СЛАУ:

Нелинейное уравнение с одним неизвестным

Дано:

 

 

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

program project2;

 

{$mode objfpc}{$H+}

 

uses

  {$IFDEF UNIX}{$IFDEF UseCThreads}

  cthreads,

  {$ENDIF}{$ENDIF}

  Classes

  { you can add units after this };

const

    e=0.001;

var

   a:array[1..3,1..4]of real;

   b:array[1..3,1..4]of real;

   x:array[1..3]of real;

   x0:array[1..3] of real;

   i,j,k:integer;

begin

{for i:=1 to 3 do

   for j:=1 to 4 do begin

                    b[i,j]:=a[i,j]/(-a[i,j]);

                    end; }

a[1,1]:=6.2; a[1,2]:=2.4; a[1,3]:=-3.3; a[1,4]:=5.9;

  b[1,2]:=a[1,2]/(-a[1,1]); b[1,3]:=a[1,3]/(-a[1,1]);

  b[1,4]:=(-a[1,4])/(-a[1,1]);

 

  a[2,1]:=2.5; a[2,2]:=4.7; a[2,3]:=-7.8; a[2,4]:=3.5;

  b[2,1]:=a[2,1]/(-a[2,2]); b[2,3]:=a[2,3]/(-a[2,2]);

  b[2,4]:=(-a[2,4])/(-a[2,2]);

 

  a[3,1]:=1.2; a[3,2]:=-7; a[3,3]:=12.3; a[3,4]:=-1.1;

  b[3,1]:=a[3,1]/(-a[3,3]); b[3,2]:=a[3,2]/(-a[3,3]);

  b[3,4]:=(-a[3,4])/(-a[3,3]);

  writeln;

  writeln('Исходная матрица :');

  for i:=1 to 3 do

                 begin

                   for j:=1 to 4 do

                                  write(' ',a[i,j]:1:1);

                   writeln;

                 end;

 

k:=0;

x[1]:=b[1,4];

x[2]:=b[2,4];

x[3]:=b[3,4];

 

repeat

x0[1]:=x[1];

x0[2]:=x[2];

x0[3]:=x[3];

 

x[1]:=b[1,2]*x[2]+b[1,3]*x[3]+b[1,4];

x[2]:=b[2,1]*x[1]+b[2,3]*x[3]+b[2,4];

x[3]:=b[3,1]*x[1]+b[3,2]*x[2]+b[3,4];

k:=k+1;

until

    (abs(x[1]-x0[1])<=e) and (abs(x[2]-x0[2])<=e) and (abs(x[3]-x0[3])<=e);

 

writeln('x1=',x[1]:8:5);

writeln('x2=',x[2]:8:5);

 writeln('x3=',x[3]:8:5);

writeln('Количество приближений k=',k);

readln;

end.        

 

Ответ:

Исходная матрица :

6.2 2.4 -3.3 5.9

2.5 4.7 -7.8 3.5

1.2 -7.0 12.3 -1.1

x1= 0.83569

x2= 0.29681

x3=-0.00204

Количество приближений k=4 

Решение СЛАУ методом простой итерации

program iter;

 

{$mode objfpc}{$H+}

 

uses

  {$IFDEF UNIX}{$IFDEF UseCThreads}

  cthreads,

  {$ENDIF}{$ENDIF}

  Classes

  { you can add units after this };

 

const

  e=0.001;

  var

    a:array[1..3,1..4] of real;

    b:array[1..3,1..4] of real;

    x:array[1..3] of real;

    i,j,k:integer;

    c,l,m:real;

begin

  a[1,1]:=6.2; a[1,2]:=2.4; a[1,3]:=-3.3; a[1,4]:=5.9;

  a[2,1]:=2.5; a[2,2]:=4.7; a[2,3]:=-7.8; a[2,4]:=3.5;

  a[3,1]:=1.2; a[3,2]:=-7; a[3,3]:=12.3; a[3,4]:=-1.1;

  for i:=1 to 3 do

     for j:=1 to 4 do begin

                      b[i,j]:=a[i,j]/(-a[i,i]);

                      end;

  k:=0;

  x[1]:=b[1,4];

  x[2]:=b[2,4];

  x[3]:=b[3,4];

  repeat

    c:=x[1];

    m:=x[2];

    l:=x[3];

    x[1]:=b[1,2]*m+b[1,3]*l+b[1,4];

    x[2]:=b[2,1]*c+b[2,3]*l+b[2,4];

    x[3]:=b[3,1]*c+b[3,2]*m+b[3,4];

    k:=k+1;

  until

     (abs(x[1]-c)<=e) and (abs(x[2]-m)<=e) and (abs(x[3]-l)<=e);

  writeln('x1=',x[1]:8:5);

  writeln('x2=',x[2]:8:5);

  writeln('x3=',x[3]:8:5);

  readln;

end. 

Омск, 2014

 

 


Информация о работе Решение СЛАУ методом Зайделя и методом простой итерации