Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ Ls Pro All 22-27.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

Программный вывод:

Код программы:

program asd_L5;

function Fpr(e:real):real; begin Fpr:=3*e*e-10*e+1; end;

function F(e:real):real; begin F:=e*e*e-5*e*e+e-3.2; end;

procedure UhK(x,b:real);

var fx,epsilon,n:real;

begin

writeln('poisk in x = ',x:2:1,';');

n:=0;

epsilon:=0.0001;

fx:=F(x);

while(abs(fx)>epsilon)do begin

x:=b+F(b)/(F(x)-F(b))*(x-f(b));

fx:=F(x);

b:=b-f(b)/Fpr(b);

n:=n+1;

end;

writeln('naiden koren: ',(x+b)/2:2:9);

writeln('chislo iteracii = ',n:2:0,'; epsilon = ', epsilon:9:9);

writeln;

end;

var f1:real;

i:integer;

begin

writeln('poisk diapazonov korney:...');

f1:=F(-4);

for i:=-4 to 5 do begin

if(f1*f(i)<0) then begin

f1:=f(i);

writeln('naiden diapazon: [', i-1, '; ',i, '];');

UhK(i-1,i);

end;

end;

writeln('exit:..');

readln;

end.

Схема выполнения метода:

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

Тема: Решение системы линейных уравнений методом итерации и методом Зейделя.

Задание:

  1. Решить систему линейных уравнений методом итерации и методом Зейделя с точностью ;

  2. Найти погрешности полученных приближенных решений;

  3. Сравнить полученные приближенные решения и их погрешности.

Решение:

Так как определитель системы , то система имеет единственное решение.

Решим систему уравнений методом итераций и Зейделя.

Так как определитель системы , то система имеет единственное решение.

Приведем данную систему к виду , где , .

решение будем искать в виде итерационной последовательности , , .

Найдем канонические нормы матрицы.

.

Mathcad Professional :

Минимальной нормой является норма . Поэтому все действия будем производить по этой норме. Итерационный процесс будем продолжать до тех пор, пока не будет выполняться условие , .

А) По методу итерации получим (разработки учебника Богданова М.В.)

.

Определим число верных знаков в приближенном значении решения. Так как , то получим с погрешностью округления . Тогда .

Определим число верных знаков в приближенном решении . Так как , , то получим приближенное решение , с погрешностью .

Ответ: , .

Б) По методу Зейделя получим (разработки учебника Богданова М.В.)

Определим число верных знаков в приближенном значении решения. Так как , то получим с погрешностью округления . Тогда .

Определим число верных знаков в приближенном решении . Так как , , то получим приближенное решение , с погрешностью .

Ответ: , .

Код программы: метод итерации

{--- Решение систем линейных уравнений методом итераций ---}

Program sistema_iter_Asd_L6;

Uses Crt;

Const N=3; EPS=0.5*1e-3;

Type

Vec=array[1..N] of Extended;

Mas=Array[1..N,1..N] of Extended;

Var

i,j,k,it,m:Byte;

Nor_L,Nor_M,Nor_K,

Norma_X,Min_Nor:Extended;

s,Pogr:Extended;

a,a1:Mas;

b,b1,y,x:Vec;

{------- приведение к виду x=b+ax ------}

Procedure Pived(aa1:Mas; bb1:Vec; Var aa:Mas; Var bb:Vec);

Var

ii,jj:Byte;

Begin

For ii:=1 to N do

For jj:=1 to N do

Begin

If ii=jj

Then aa[ii,jj]:=0

Else aa[ii,jj]:=-aa1[ii,jj]/aa1[ii,ii];

End;

For ii:=1 to N do

bb[ii]:=bb1[ii]/aa1[ii,ii];

End;

{------- норма матрицы по L ---------}

Function Norma_L(aa:Mas):Extended;

Var

ii,jj:Byte;

Norma,ss:Extended;

Begin

Norma:=Abs(aa[1,1]);

For ii:=1 to N do

Begin

ss:=0;

For jj:=1 to N do

ss:=ss+Abs(aa[ii,jj]);

If Norma<ss

Then

Norma:=ss;

End;

Norma_L:=Norma

End;

{----- ­ норма матрицы по M -------}

Function Norma_M(aa:Mas):Extended;

Var

ii,jj:Byte;

Norma,ss:Extended;

Begin

Norma:=Abs(aa[1,1]);

For jj:=1 to N do

Begin

ss:=0;

For ii:=1 to N do

ss:=ss+Abs(aa[ii,jj]);

If Norma<ss

Then Norma:=ss;

End;

Norma_M:=Norma

End;

{--------- ­ норма матрицы по K -----------}

Function Norma_K(aa:Mas):Extended;

Var

ii,jj:Byte;

Norma:Extended;

Begin

Norma:=0;

For ii:=1 to N do

For jj:=1 to N do

Norma:=Norma+Sqr(aa[ii,jj]);

Norma_K:=Sqrt(Norma);

End;

{--------- минимум из трех ----------}

Procedure Min3(aa,bb,cc:Extended; Var min_3:Extended;Var kk:Byte);

Begin

If aa<bb

Then

If aa<cc

Then

Begin min_3:=aa; kk:=1 End

Else

Begin min_3:=cc; kk:=3 End

Else

If bb<cc

Then

Begin min_3:=bb; kk:=2 End

Else

Begin min_3:=cc; kk:=3 End;

End;

{----- норма вектора  -------}

Function Norma_V(aa:Vec; kk:Byte):Extended;

Var

ii,jj:Byte;

Norma,ss:Extended;

Begin

Case kk of

1: Begin

Norma:=Abs(aa[1]);

For ii:=2 to N do

If Norma<Abs(aa[ii])

Then Norma:=Abs(aa[ii]);

End;

2: Begin

Norma:=0;

For ii:=1 to N do

Norma:=Norma+Abs(aa[ii]);

End;

3: Begin

Norma:=0;

For ii:=1 to N do

Norma:=Norma+Sqr(aa[ii]);

Norma:=Sqrt(Norma);

End;

End;{Case}

Norma_V:=Norma

End;

{*************************}

Begin

ClrScr;

{--- ввод элементов матрицы ----}

WriteLn('введите элементы матрицы’);

For i:=1 to N do

Begin

For j:=1 to N do

Begin

Write('a[',i,' ',j,'] = ');ReadLn(a1[i,j]);

End;

Write('b[',i:2,' ] = ');Readln(b1[i]);

Writeln;

End;

{--- приведение матрицы ---}

Pived(a1,b1,a,b);

for i:=1 to N do

Begin

for j:=1 to N do

Write(a[i,j]:8:3);

Write(' ',b[i]:8:3);

WriteLn

End;

{'определение минимальной нормы-'}

Nor_L:=Norma_L(a);

Nor_M:=Norma_m(a);

Nor_K:=Norma_k(a);

Min3(Nor_L,Nor_M,Nor_K,Min_Nor,k);

WriteLn('Nor_L =',nor_L:7:4,' Nor_M =',nor_m:7:4,' Nor_K =',nor_k:7:4);

WriteLn('Min_Nor =',min_nor:7:4,' k =',k:2);

{'—итерационное вычисление решения систем уравнений --'}

Pogr:=(1-Min_Nor)/Min_Nor*EPS;

it:=0;

For i:=1 to N do

x[i]:=b[i];

Repeat

For i:=1 to N do

Begin

it:=it+1;

y[i]:=x[i];

s:=0;

For j:=1 to N do

s:=s+a[i,j]*x[j];

x[i]:=b[i]+s;

y[i]:=y[i]-x[i];

End;

Norma_X:=Norma_V(y,k);

Until Norma_X<Pogr;

WriteLn('решение систем уравнений методом итераций');

For i:=1 to N do

Begin

WriteLn(' x[',i:2,' ] = ',x[i]:11:8);

End;

WriteLn('—число итераций= ',it:3,' --- погрешность= ',Pogr:11:8);

WriteLn('*****************************');

ReadLn;

End.