МОНУ НТУУ«КПІ»
Лабораторна робота № 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('riadE(n=1..00)(n+1)^2*x^n pry x(-1,1)');
writeln('vvedit x'); readln(x);
if (x1) thenwriteln('nevirne x') {pereviryaem na virnist x}
else
begin
writeln('vvedit eps');readln(eps);
writeln('vvedit limit kilkostiiteratsii'); readln(kk);
xn:=1; {prysvoyemo znacheniazminnyh}
n:=0;
s:=0;
repeat {r}
an:=xn*sqr(n+1); s:=s+an;
xn:=xn*x;
n:=n+1;
until (abs(an)kk); {r}
if (n>kk) thenwriteln('perevyscheno limit kilkosti krokiv'); {yaksho cykl zakin iteraciyamy}
writeln('resultat:');
writeln(' kilkist krokiviteratsii:',n);
writeln(' nablyzhene znachenniafunktsii:',s);
f:=(1+x)/((1-x)*(1-x)*(1-x));{tochne znachenia}
writeln(' tochne znachenniafunktsii:',f);
writeln(' |f|-|s|=',abs(f)-abs(s));{pohybka mizh tochnym ta nabl}
end;
readkey;
end.
/>
Приклади роботи програми:
/>
/>
/>
Висновок
У цій роботі ми навчилисярозробляти ітераційні алгоритми, будувати їх блок-схеми та програмуватизасобами мови Turbo Pascal з використаннямциклів. Ітерації корисні для обчислення приблизних значень деяких величин чифункцій.