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

ІКТА / КБ-24 / Інформаційні технології Лах Ю.В. / IT Звіт №3 Войтович О.О

.docx
Скачиваний:
51
Добавлен:
18.09.2018
Размер:
82.51 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

ІКТА

кафедра ЗІ

З В І Т

до лабораторної роботи № 3

з курсу: «ІНФОРМАЦІЙНІ ТЕХНОЛОГІЇ»

Варіант № 2

Виконав: ст. гр. КБ-24

Войтович О. О.

Прийняв: Крет Т.Б.

Львів 2018

Мета роботи навчитись використовувати середовище МАТЛАБ для реалізації методу простої ітерації.

ЗАВДАННЯ

Методом простої ітерації обчислити квадратний корінь із — значення функції при (k – номер варіант) із відносною похибкою ε =1%. При обчисленнях використовувати рекурентну формулу для із [3, с.30]:

Визначити число N необхідних ітерацій для одержання результату (з заданою відносною похибкою ε) при таких значеннях нульових наближень (x0) : 1, 10, 50, 100, 200, 1000, 10000. Обчислення похибки здійснювати за такою формулою:

Провести перевірку правильності обчислень в Ms Excel/LibreOffice Calc.

Код програми

k=2;

z=k+7;

e=0.01;

a=k*(z^3)+(k-1)^2;

n=0;

X1=1;

Xn_plus_1=1/2*(X1+a/X1);

while abs(X1-Xn_plus_1)>e

X1=Xn_plus_1;

Xn_plus_1=1/2*(X1+a/X1);

Sqrt=Xn_plus_1;

p=abs((Xn_plus_1-X1)/Xn_plus_1)*100;

if(((Xn_plus_1-X1)/Xn_plus_1)*0.01<e)

n=n+1;

end;

end;

fprintf('При x нульове =1\n');

fprintf('a=%.3f\n',a);

fprintf('Корінь квадратний числа а=%.3f\n',Sqrt);

fprintf( 'Кількість ітерацій = ( %i )\n', n);

fprintf('Похибка=%.3f\n',p);

fprintf('\n');

k=2;

z=k+7;

e=0.01;

a=k*(z^3)+(k-1)^2;

n=0;

X10=10;

Xn_plus_1=1/2*(X10+a/X10);

while abs(X10-Xn_plus_1)>e

X10=Xn_plus_1;

Xn_plus_1=1/2*(X10+a/X10);

Sqrt=Xn_plus_1;

p=abs((Xn_plus_1-X10)/Xn_plus_1)*100;

if(((Xn_plus_1-X10)/Xn_plus_1)*0.01<e)

n=n+1;

end;

end;

fprintf('При x нульове =10\n');

fprintf('a=%.3f\n', a);

fprintf('Корінь квадратний числа а=%.3f\n',Sqrt);

fprintf( 'Кількість ітерацій = ( %i )\n', n);

fprintf('Похибка=%.3f\n',p);

fprintf('\n');

k=2;

z=k+7;

e=0.01;

a=k*(z^3)+(k-1)^2;

n=0;

X50=50;

Xn_plus_1=1/2*(X50+a/X50);

while abs(X50-Xn_plus_1)>e

X50=Xn_plus_1;

Xn_plus_1=1/2*(X50+a/X50);

Sqrt=Xn_plus_1;

p=abs((Xn_plus_1-X50)/Xn_plus_1)*100;

if(((Xn_plus_1-X50)/Xn_plus_1)*0.01<e)

n=n+1;

end;

end;

fprintf('При x нульове =50\n');

fprintf('a=%.3f\n',a);

fprintf('Корінь квадратний числа а=%.3f\n',Sqrt);

fprintf( 'Кількість ітерацій = ( %i )\n', n);

fprintf('Похибка=%.3f\n',p);

fprintf('\n');

k=2;

z=k+7;

e=0.01;

a=k*(z^3)+(k-1)^2;

n=0;

X100=100;

Xn_plus_1=1/2*(X100+a/X100);

while abs(X100-Xn_plus_1)>e

X100=Xn_plus_1;

Xn_plus_1=1/2*(X100+a/X100);

Sqrt=Xn_plus_1;

p=abs((Xn_plus_1-X100)/Xn_plus_1)*100;

if(((Xn_plus_1-X100)/Xn_plus_1)*0.01<e)

n=n+1;

end;

end;

fprintf('При x нульове =100\n');

fprintf('a=%.3f\n',a);

fprintf('Корінь квадратний числа а=%.3f\n',Sqrt);

fprintf( 'Кількість ітерацій = ( %i )\n', n);

fprintf('Похибка=%.3f\n',p);

fprintf('\n');

k=2;

z=k+7;

e=0.01;

a=k*(z^3)+(k-1)^2;

n=0;

X200=200;

Xn_plus_1=1/2*(X200+a/X200);

while abs(X200-Xn_plus_1)>e

X200=Xn_plus_1;

Xn_plus_1=1/2*(X200+a/X200);

Sqrt=Xn_plus_1;

p=abs((Xn_plus_1-X200)/Xn_plus_1)*100;

if(((Xn_plus_1-X200)/Xn_plus_1)*0.01<e)

n=n+1;

end;

end;

fprintf('При x нульове =200\n');

fprintf('a=%.3f\n',a);

fprintf('Корінь квадратний числа а=%.3f\n',Sqrt);

fprintf( 'Кількість ітерацій = ( %i )\n', n);

fprintf('Похибка=%.3f\n',p);

fprintf('\n');

k=2;

z=k+7;

e=0.01;

a=k*(z^3)+(k-1)^2;

n=0;

X1000=1000;

Xn_plus_1=1/2*(X1000+a/X1000);

while abs(X1000-Xn_plus_1)>e

X1000=Xn_plus_1;

Xn_plus_1=1/2*(X1000+a/X1000);

Sqrt=Xn_plus_1;

p=abs((Xn_plus_1-X1000)/Xn_plus_1)*100;

if(((Xn_plus_1-X1000)/Xn_plus_1)*0.01<e)

n=n+1;

end;

end;

fprintf('При x нульове =1000\n');

fprintf('a=%.3f\n',a);

fprintf('Корінь квадратний числа а=%.3f\n',Sqrt);

fprintf( 'Кількість ітерацій = ( %i )\n', n);

fprintf('Похибка=%.3f\n',p);

fprintf('\n');

k=2;

z=k+7;

e=0.01;

a=k*(z^3)+(k-1)^2;

n=0;

X10000=10000;

Xn_plus_1=1/2*(X10000+a/X10000);

while abs(X10000-Xn_plus_1)>e

X10000=Xn_plus_1;

Xn_plus_1=1/2*(X10000+a/X10000);

Sqrt=Xn_plus_1;

p=abs((Xn_plus_1-X1000)/Xn_plus_1)*100;

if(((Xn_plus_1-X10000)/Xn_plus_1)*0.01<e)

n=n+1;

end;

end;

fprintf('При x нульове =10000\n');

fprintf('a=%.3f\n',a);

fprintf('Корінь квадратний числа а=%.3f\n',Sqrt);

fprintf( 'Кількість ітерацій = ( %i )\n', n);

fprintf('Похибка=%.3f\n',p);

Результат виконання роботи

При x нульове =1

a=1459.000

Корінь квадратний числа а=38.197

Кількість ітерацій = ( 8 )

Похибка=0.000

При x нульове =10

a=1459.000

Корінь квадратний числа а=38.197

Кількість ітерацій = ( 5 )

Похибка=0.000

При x нульове =50

a=1459.000

Корінь квадратний числа а=38.197

Кількість ітерацій = ( 3 )

Похибка=0.000

При x нульове =100

a=1459.000

Корінь квадратний числа а=38.197

Кількість ітерацій = ( 4 )

Похибка=0.001

При x нульове =200

a=1459.000

Корінь квадратний числа а=38.197

Кількість ітерацій = ( 5 )

Похибка=0.001

При x нульове =1000

a=1459.000

Корінь квадратний числа а=38.197

Кількість ітерацій = ( 7 )

Похибка=0.011

При x нульове =10000

a=1459.000

Корінь квадратний числа а=38.197

Кількість ітерацій = ( 11 )

Похибка=0.011

Результати роботи в Excel

Висновок

Під час виконання даної лабораторної роботи я навчився використовувати середовище МАТЛАБ для реалізації методу простої ітерації.