Проектування ітераційних алгоритмів

МОНУ НТУУ"КПІ"



















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

По темі:

"Проектування ітераційних алгоритмів"







Виконала

студентка 1-го курсу ТЕФ

Групи ТР-01

Печененко В.О.

Перевірив:

Щербашин Ю.Д.









Київ

2010


Мета роботи: навчитися розробляти ітераційні алгоритми і програмувати їх засобами мови Turbo Pascal з використанням циклів.

	Завдання: розробити алгоритм, намалювати блок-схему і написати програму обчислення значення функції , розкладеної в степеневий ряд.

	Обчислення суми членів ряду проводити доти, доки абсолютна величина члена ряду не стане меншою від  (наприклад, ). При цьому порахувати кількість виконаних кроків ітерації (скільки членів ряду ввійшло в суму). Крім того, для підстраховки від зациклювання, яке може виникнути через некоректні вхідні дані, встановити ліміт кількості кроків. Якщо вихід із циклу відбувся через вичерпання ліміту, то видати про це повідомлення.

	При обчисленні наступного члена ряду використовувати попередній член чи його частину, а не організовувати додатковий цикл для повного його обчислення.

	Порівняти (знайти абсолютне значення різниці) обчислене з використанням ряду наближене значення функції із значенням, обчисленим за формулою функції.

	В алгоритмі передбачити перевірку правильності введення даних.

	За алгоритмом провести розрахунки не менш ніж з трьома різними наборами вхідних даних: при різних значеннях х,  і ліміту кількості кроків.

	Як результат роботи видати: обчислене наближене значення функції, кількість кроків ітерації, обчислене за формулою значення функції, абсолютну різницю наближеного і "точного" значень функції.

Програма:



 при 



program nabl_znach;

{rakhuie nablyzhene znachennia za stepenevym riadom}

uses crt;

var x, eps, xn,an,s,f:real;

kk, n:integer;

begin

clrscr;

writeln('riad E(n=1..00)(n+1)^2*x^n pry x(-1,1)');

writeln('vvedit x'); readln(x);

if (x<-1) or (x>1) then writeln('nevirne x') {pereviryaem na virnist x}

else

begin

writeln('vvedit eps'); readln(eps);

writeln('vvedit limit kilkosti iteratsii'); readln(kk);

xn:=1; {prysvoyemo znachenia zminnyh}

n:=0;

s:=0;

repeat {r}

an:=xn*sqr(n+1); s:=s+an;

xn:=xn*x;

n:=n+1;

until (abs(an)<eps) or (n>kk); {r}

if (n>kk) then writeln('perevyscheno limit kilkosti krokiv'); {yaksho cykl zakin iteraciyamy}

writeln('resultat:');

writeln(' kilkist krokiv iteratsii:',n);

writeln(' nablyzhene znachennia funktsii:',s);

f:=(1+x)/((1-x)*(1-x)*(1-x)); {tochne znachenia}

writeln(' tochne znachennia funktsii:',f);

writeln(' |f|-|s|=',abs(f)-abs(s)); {pohybka mizh tochnym ta nabl}

end;

readkey;

end.






	Приклади роботи програми:

	

	

	

	


	

	

	

	
Висновок

	

У цій роботі ми навчилися розробляти ітераційні алгоритми, будувати їх блок-схеми та програмувати засобами мови Turbo Pascal з використанням циклів. Ітерації корисні для обчислення приблизних значень деяких величин чи функцій.