Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Контрольная 1 Никитина Дарья ПИН 31Д

.docx
Скачиваний:
6
Добавлен:
16.07.2021
Размер:
132.5 Кб
Скачать

Контрольная работа 1

Вариант 1

никитина дарья пин 31д

Код m-файла (метод простой итерации):

n1=input('Введите номер группы: ');

n2=input('Bведите ваш номер в списке группы:');

n=n1+n2;

%rand('normal');

rand('seed',n);

A=rand(7);

b=rand(7,1);

Au=triu(A);

A1=tril(A);

Ad=diag(diag(A));

su=sum(sum(abs(Au)));

sl=sum(sum(abs(A1)));

Su=sum(abs(Au));

S1=sum(abs(A1));

sigma=5;

O=ones(7);

Ou=triu(O);

S6=diag(sigma*(Su./S1));

At=sigma*((A1+ Ou)./(Au'+Ou));

neo=rem(n2,2);

mode=rem(n2,3);

if (mode==0) A1=(sigma*su/sl)*A1; end

if (mode==1) A1=S6*A1; end

if (mode==2) A1=At.*A1; end

A=A1+Ad+Au;

ma=max(max(abs(A)));

if (ma>1000) A=0.08*A; end

A=0.5*A+2.75*diag(diag(A));

disp(' Матрица системы: ');

A

disp('Правая часть системы:');

b

P=size(A);

n=P(1);

for i=1:n

d=A(i,i);

bi(i)=b(i)/d;

for j=1:n

AI(i,j)=-A(i,j)/d;

AI(i,i)=0;

end

end

bi=bi';

EPS=0.0001;

X=zeros(n,1);

Y=X;

X=bi+AI*X;

P=Y-X;

I=1;

v=norm(P,inf);

while v>EPS

I=I+1;

Y=X;

X=bi+AI*X;

P=Y-X;

v=norm(P,inf);

end

disp('ОТВЕТ:');

X

disp('Число итераций:');

I

disp('ПРОВЕРКА, точное решение:');

A^(-1)*b

Результат выполнения:

>> ITER_PROST

Введите номер группы: 31

Bведите ваш номер в списке группы:1

Матрица системы:

A =

3.4372 0.2494 0.0874 0.3836 0.4416 0.0319 0.3524

0.8846 11.6850 0.4099 0.2723 0.1288 0.1190 0.3480

0.2909 0.1041 4.2038 0.3779 0.0752 0.3817 0.2410

0.1285 0.4613 0.8264 15.6365 0.0717 0.0176 0.1724

2.8812 0.2742 2.9513 2.4291 22.8472 0.3620 0.0062

8.5297 7.8185 4.0727 4.3485 3.6773 8.0192 0.1621

19.8479 27.0992 15.2508 12.8309 16.6498 8.3144 47.4059

Правая часть системы:

b =

0.0522

0.0564

0.1264

0.1291

0.4300

0.2699

0.9084

ОТВЕТ:

X =

0.0121

0.0027

0.0290

0.0065

0.0129

-0.0061

-0.0021

Число итераций:

I =

14

ПРОВЕРКА, точное решение:

ans =

0.0121

0.0027

0.0290

0.0065

0.0129

-0.0060

-0.0020

>>

Код m-файла (метод Зейделя):

n1=input('Введите номер группы: ');

n2=input('Bведите ваш номер в списке группы:');

n=n1+n2;

%rand('normal');

rand('seed',n);

A=rand(7);

b=rand(7,1);

Au=triu(A);

A1=tril(A);

Ad=diag(diag(A));

su=sum(sum(abs(Au)));

sl=sum(sum(abs(A1)));

Su=sum(abs(Au));

S1=sum(abs(A1));

sigma=5;

O=ones(7);

Ou=triu(O);

S6=diag(sigma*(Su./S1));

At=sigma*((A1+ Ou)./(Au'+Ou));

neo=rem(n2,2);

mode=rem(n2,3);

if (mode==0) A1=(sigma*su/sl)*A1; end

if (mode==1) A1=S6*A1; end

if (mode==2) A1=At.*A1; end

A=A1+Ad+Au;

ma=max(max(abs(A)));

if (ma>1000) A=0.08*A; end

A=0.5*A+2.75*diag(diag(A));

disp(' Матрица системы: ');

A

disp('Правая часть системы:');

b

P=size(A);

n=P(1);

for i=1:n

d=A(i,i);

bi(i)=b(i)/d;

for j=1:n

AI(i,j)=-A(i,j)/d;

AI(i,i)=0;

end

end

bi=bi';

EPS=0.0001;

X=zeros(n,1);

Y=X;

X(1)=bi(1) +AI(1,2)*X(2)+AI(1,3)*X(3)+AI(1,4)*X(4)+AI(1,5)*X(5)+AI(1,6)*X(6)+AI(1,7)*X(7);

X(2)=bi(2)+AI(2,1)*X(1) +AI(2,3)*X(3)+AI(2,4)*X(4)+AI(2,5)*X(5)+AI(2,6)*X(6)+AI(2,7)*X(7);

X(3)=bi(3)+AI(3,1)*X(1)+AI(3,2)*X(2) +AI(3,4)*X(4)+AI(3,5)*X(5)+AI(3,6)*X(6)+AI(3,7)*X(7);

X(4)=bi(4)+AI(4,1)*X(1)+AI(4,2)*X(2)+AI(4,3)*X(3) +AI(4,5)*X(5)+AI(4,6)*X(6)+AI(4,7)*X(7);

X(5)=bi(5)+AI(5,1)*X(1)+AI(5,2)*X(2)+AI(5,3)*X(3)+AI(5,4)*X(4) +AI(5,6)*X(6)+AI(5,7)*X(7);

X(6)=bi(6)+AI(6,1)*X(1)+AI(6,2)*X(2)+AI(6,3)*X(3)+AI(6,4)*X(4)+AI(6,5)*X(5) +AI(6,7)*X(7);

X(7)=bi(7)+AI(7,1)*X(1)+AI(7,2)*X(2)+AI(7,3)*X(3)+AI(7,4)*X(4)+AI(7,5)*X(5)+AI(7,6)*X(6);

P=Y-X;

I=1;

v=norm(P,inf);

while v>EPS

I=I+1;

Y=X;

X(1)=bi(1) +AI(1,2)*X(2)+AI(1,3)*X(3)+AI(1,4)*X(4)+AI(1,5)*X(5)+AI(1,6)*X(6)+AI(1,7)*X(7);

X(2)=bi(2)+AI(2,1)*X(1) +AI(2,3)*X(3)+AI(2,4)*X(4)+AI(2,5)*X(5)+AI(2,6)*X(6)+AI(2,7)*X(7);

X(3)=bi(3)+AI(3,1)*X(1)+AI(3,2)*X(2) +AI(3,4)*X(4)+AI(3,5)*X(5)+AI(3,6)*X(6)+AI(3,7)*X(7);

X(4)=bi(4)+AI(4,1)*X(1)+AI(4,2)*X(2)+AI(4,3)*X(3) +AI(4,5)*X(5)+AI(4,6)*X(6)+AI(4,7)*X(7);

X(5)=bi(5)+AI(5,1)*X(1)+AI(5,2)*X(2)+AI(5,3)*X(3)+AI(5,4)*X(4) +AI(5,6)*X(6)+AI(5,7)*X(7);

X(6)=bi(6)+AI(6,1)*X(1)+AI(6,2)*X(2)+AI(6,3)*X(3)+AI(6,4)*X(4)+AI(6,5)*X(5) +AI(6,7)*X(7);

X(7)=bi(7)+AI(7,1)*X(1)+AI(7,2)*X(2)+AI(7,3)*X(3)+AI(7,4)*X(4)+AI(7,5)*X(5)+AI(7,6)*X(6);

P=Y-X;

v=norm(P,inf);

end

disp('ОТВЕТ:');

X

disp('Число итераций:');

I

disp('ПРОВЕРКА, точное решение:');

A^(-1)*b

Результат выполнения:

>> ZEIDEL_ITER

Введите номер группы: 31

Bведите ваш номер в списке группы:1

Матрица системы:

A =

3.4372 0.2494 0.0874 0.3836 0.4416 0.0319 0.3524

0.8846 11.6850 0.4099 0.2723 0.1288 0.1190 0.3480

0.2909 0.1041 4.2038 0.3779 0.0752 0.3817 0.2410

0.1285 0.4613 0.8264 15.6365 0.0717 0.0176 0.1724

2.8812 0.2742 2.9513 2.4291 22.8472 0.3620 0.0062

8.5297 7.8185 4.0727 4.3485 3.6773 8.0192 0.1621

19.8479 27.0992 15.2508 12.8309 16.6498 8.3144 47.4059

Правая часть системы:

b =

0.0522

0.0564

0.1264

0.1291

0.4300

0.2699

0.9084

ОТВЕТ:

X =

0.0121

0.0027

0.0290

0.0065

0.0129

-0.0060

-0.0020

Число итераций:

I =

4

ПРОВЕРКА, точное решение:

ans =

0.0121

0.0027

0.0290

0.0065

0.0129

-0.0060

-0.0020

>>

Соседние файлы в предмете Численные методы