Автор работы: Пользователь скрыл имя, 17 Апреля 2014 в 05:34, лабораторная работа
Цель работы:
1. Решить систему линейных алгебраических уравнений методом простой итерации и методом Зайделя с заданной точностью ε.
2. Решить нелинейное уравнение с одним неизвестным:
a. Методом полвинного деления;
b. Методом касательных;
c. Методом хорд.
ФЕДЕРАЛЬНОЕ АГЕНСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА
федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«ОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ»
(ОмГУПС (ОмИИТ))
Кафедра «Инфокоммуникационные системы и информационная безопасность»
Лабораторная работа
«Решение СЛАУ методом Зайделя и методом простой итерации»
Выполнила: студентка гр. 12ж
Волкова Н. В.
Проверил: Епифанцева М.Я.
Цель работы:
Система линейных алгебраических уравнений
Дано:
Условие сходимости для данной СЛАУ:
Нелинейное уравнение с одним неизвестным
Дано:
Решение СЛАУ методом Зайделя
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
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]+
x[2]:=b[2,1]*x[1]+b[2,3]*x[3]+
x[3]:=b[3,1]*x[1]+b[3,2]*x[2]+
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('Количество
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
Информация о работе Решение СЛАУ методом Зайделя и методом простой итерации