оаип ч1 лаба 1
.docxБЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра программного обеспечения информационных технологий
Факультет ФНиДО
Специальность ПОИТ
Лабораторная работа № 1
по дисциплине «Основы алгоритмизации и программирования»
часть 1
Вариант № 25
Выполнил студент: Мирончик В.В.
группа 001022
Зачетная книжка № 001022-24
Минск 2010
1). Задание
Для аргумента , изменяющегося от –0.6 с шагом 0.05 вычислить 20 значений функций:
Функцию f2(x) вычислить для ряда точностей . Для указанных точностей определить количество N элементов ряда, суммируемых для достижения заданной точности. Результаты расчетов свести в таблицу.
2). Схема алгоритма.
На рис. 1 представлена схема алгоритма по ГОСТ 19. 701-90.
3). Текст программы.
PROGRAM Ex1;
Uses Crt;
Const
eps1 = 0.01; { Точность 10-2}
eps2 = 0.01; { Точность 10-3 }
eps3 = 0.001; { Точность 10-4 }
a = -0.6; { Начальное значение Х}
b = 0.05; { Шаг}
N = 20; { Количество значений функции }
Var
k1, k2, k3,j, i: Integer; {Вспомогательные переменные}
init,f1, f2_1, f2_2, f2_3, step, slag, x: Real;
BEGIN
ClrScr;
writeln('__________________________________________________________');
writeln('| | | e=0.01 | e=0.001 | e=0.0001 |');
writeln('| x | f1(x) |----------|-----------|------------|');
writeln('| | |f2(x) | N | f2(x) | N |f2(x) | N |');
writeln('|_______|_____________|______|___|_______|___|________|___|');
x := a; {Начальное значение Х}
for i:=1 to N do
begin
f1:=1/(1-x)*ln(1/(1-x)); { Вычисляется значение функции f1}
{ Вычисляется значения функции f2}
step:=1; {Начальное значение степени Х}
f2_1:=0; {Начальное значение функции f2_1}
k1:=0;
repeat {Итерационный цикл для точности 10-2}
init:=0;
inc(k1);
for j:=1 to k1 do init:=init+1/j;
step:=step*x; {Наращивается степень}
slag:=step*init; {Считается очередное слагаемое}
f2_1:=f2_1+slag; {Считается значение f2_1}
until abs(slag)<=eps1;{Выход из цикла, когда слагаемое становится меньше точности 10-2}
f2_2:=f2_1;
k2:=k1;
repeat {Итерационный цикл для точности 10-3}
init:=0;
inc(k2);
for j:=1 to k1 do init:=init+1/j;
step:=step*x; {Наращивается степень}
slag:=step*init; {Считается очередное слагаемое}
f2_2:=f2_2+slag; {Считается значение f2_2}
until abs(slag)<=eps2; {Выход из цикла, когда слагаемое становится меньше точности 10-3}
f2_3:=f2_2;
k3:=k2;
repeat {итерационный цикл для точности 10-4}
init:=0;
inc(k3);
for j:=1 to k1 do init:=init+1/j;
step:=step*x; {Наращивается степень}
slag:=step*init; {Считается очередное слагаемое}
f2_3:=f2_3+slag;
until abs(slag)<=eps3; {Выход из цикла, когда слагаемое становится меньше точности 10-4}
{ Вывод результатов}
writeln('| ', x:5:2,' | ',f1:12:9,'| ',f2_1:5:2,'| ',
k1:2,'| ',f2_2:6:3,'| ',k2:2,'| ',f2_3:7:4,'| ', k3:2,'|');
x:=x+b;
end;
{ завершение таблицы }
write('-----------------------------------------------------------');
Readkey
END.
Результаты работы программы:
x |
f1(x) |
e=0.01 |
e=0.001 |
e=0.0001 |
||||
f2(x)
|
N |
f2(x) |
N |
f2(x) |
N |
|||
-0.60 -0.55 -0.50 -0.45 -0.40 -0.35 -0.30 -0.25 -0.20 -0.15 -0.10 -0.05 0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 |
-0.293752268 -0.282745117 -0.270310072 -0.256250729 -0.240337312 -0.222299698 -0.201818665 -0.178514841 -0.151934631 -0.121532124 -0.086645618 -0.046466823 0.000000000 0.053992941 0.117067240 0.191198741 0.278929439 0.383576097 0.509535634 0.662742948 |
-0.29 -0.28 -0.27 -0.26 -0.24 -0.22 -0.20 -0.18 -0.15 -0.12 -0.09 -0.05 0.00 0.05 0.12 0.19 0.28 0.38 0.51 0.66 |
12 10 9 7 7 6 5 4 4 3 3 2 1 2 3 3 4 4 5 6 |
-0.295 -0.284 -0.269 -0.255 -0.240 -0.223 -0.202 -0.179 -0.152 -0.122 -0.087 -0.046 0.000 0.054 0.117 0.191 0.279 0.383 0.509 0.662 |
13 11 10 8 8 7 6 5 5 4 4 3 2 3 4 4 5 5 6 7 |
-0.2934 -0.2824 -0.2701 -0.2561 -0.2406 -0.2221 -0.2020 -0.1783 -0.1519 -0.1216 -0.0867 -0.0464 0.0000 0.0539 0.1170 0.1910 0.2788 0.3831 0.5091 0.6622 |
16 14 12 10 9 8 7 6 6 5 5 4 3 4 5 5 6 6 7 8 |
рис. 1 схема алгоритма по ГОСТ 19. 701-90.