лаба №1
.docxБЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра программного обеспечения информационных технологий
Факультет ФНиДО
Специальность ПОИТ
Лабораторная работа № 1
по дисциплине «Основы алгоритмизации и программирования»
часть 1
Вариант № 8
Выполнил студент: Батура Анастасия Владимировна
группа 001021
Зачетная книжка № 001021-07
Минск 2010
Задача:
Вычислить значения функций f1(x) и f2(x) для значений аргументов, указанных в вариантах заданий № 1 – 30 по первой работе. Функцию f2(x) вычислить для ряда точностей . Для указанных точностей определить количество N элементов ряда, суммируемых для достижения заданной точности. Результаты расчетов свести в следующую таблицу:
x |
f1(x) |
||||||||
f2(x) |
N |
f2(x) |
N |
f2(x) |
N |
||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
…. |
|
|
|
|
|
|
|
Для аргумента , изменяющегося от –0.6 с шагом 0.05 вычислить 20 значений функций:
Примечание: Так как получаемое значение функции получается очень маленьким, мной была увеличена точность вычисления f2 на порядок для всех трех точностей.
Листинг:
PROGRAM Lab1;
Uses crt;
Const
eps1 = 0.001; { Точность 10-3}
eps2 = 0.0001; { Точность 10-4 }
eps3 = 0.00001; { Точность 10-5 }
a = -0.6; { Начальное значение Х}
b = 0.05; { Шаг} N = 20; { Количество значений функции }
Var
k1, k2, k3, i: Integer; {Вспомогательные переменные}
f1, f2_1, f2_2, f2_3, step, slag, x: Real;
function pow(A,B:Real):Real; {Функция возведения числа А в степень В}
var T:Real;
begin
T := Abs(A);
if A < 0 then pow := (-1)*Exp(B*Ln(T))
else pow := Exp(B*Ln(T));
end;
begin
{Очистка экрана и построение шапки таблицы}
clrscr;
writeln('___________________________________________________________');
writeln('| | | e=0.001 | e=0.0001 | e=0.00001 |');
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/36*(11*pow(x,3)-15*sqr(x)+6*x+6*pow(1-x,3)*ln(1-x)); { Вычисляется значение функции f1}
{ Вычисляется значения функции f2}
step:=pow(x,3); {Начальное значение степени Х}
f2_1:=0; {Начальное значение функции f2_1}
k1:=0;
repeat {Итерационный цикл для точности 10-3}
inc(k1);
step:=step*x; {Наращивается степень}
slag:=step/(k1*(k1+1)*(k1+2)*(k1+3)); {Считается очередное слагаемое}
f2_1:=f2_1+slag; {Считается значение f2_1}
until abs(slag)<=eps1; {Выход из цикла, когда слагаемое становится меньше точности 10-3}
f2_2:=f2_1;
k2:=k1;
repeat {Итерационный цикл для точности 10-4}
inc(k2);
step:=step*x; {Наращивается степень}
slag:=step/(k2*(k2+1)*(k2+2)*(k2+3)); {Считается очередное слагаемое}
f2_2:=f2_2+slag;
until abs(slag)<=eps2; {Выход из цикла, когда слагаемое становится меньше точности 10-4}
f2_3:=f2_2;
k3:=k2;
repeat {итерационный цикл для точности 10-5}
inc(k3);
step:=step*x; {Наращивается степень}
slag:=step/(k3*(k3+1)*(k3+2)*(k3+3)); {Считается очередное слагаемое}
f2_3:=f2_3+slag;
until abs(slag)<=eps3; {Выход из цикла, когда слагаемое становится меньше точности 10-5}
{ Вывод результатов}
writeln('| ', x:5:2,' | ',f1:12:9,'| ',f2_1:5:3,'|',
k1:2,' | ',f2_2:6:4,'|',k2:2,' | ',f2_3:7:5,'|',k3:2,' |');
x:=x+b;
end;
{ завершение таблицы }
write('-----------------------------------------------------------');
repeat until keypressed;
end.
Таблица с результатами расчетов:
Схема алгоритма по ГОСТ 19. 701-9: