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

Лабораторная работа 1, вариант 13

.doc
Скачиваний:
21
Добавлен:
01.04.2014
Размер:
131.58 Кб
Скачать

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра программного обеспечения информационных технологий

Факультет НиДО

Специальность ПОИТ

Лабораторная работа № 1

по дисциплине «Основы алгоритмизации и программирования»

часть 1

Вариант № 13

Минск 2009

  1. Задание

Вычислить значения функций 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 значений функций:

;

.

2) Схема алгоритма

На рис. 1 представлена схема алгоритма данной задачи по ГОСТ 19. 701-90.

3) Текст программы

program lab1;

uses crt;

const n=20; {количество значений функции}

eps1=0.01; {точность 10-2}

eps2=0.001; {точность 10-3}

eps3=0.0001; {точность 10-4 }

a=-0.6; {начальное значение аргумента}

b=0.05; {шаг}

c=-1; {значение, которое будем возводить в степень}

var i,k1,k2,k3:integer; {вспомогательные переменные}

x,f1,f2_1,f2_2,f2_3,step,slag: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; {начальное значение x}

for i:=1 to n do {цикл для вычисления каждого значения x}

begin

f1:=ln(2*cos(x/2)); {вычисляем значение функции f1}

k1:=1; {номер элемента ряда}

step:=1; {начальное значение степени (-1) при k=1}

f2_1:=cos(x); {начальное значение функции f2 при k=1}

repeat {итерационный цикл для точности 10-2}

inc(k1); {увеличиваем k на 1}

step:=step*c; {считаем степень (-1) при k1}

slag:=step*cos(k1*x)/k1; {считаем очередное слагаемое функции}

f2_1:=f2_1+slag; {прибавляем к общей сумме полученное слагаемое}

until abs(slag)<=eps1; {выходим из цикла, когда слагаемое становится меньше точности 10-2}

f2_2:=f2_1;

k2:=k1;

repeat {итерационный цикл для точности 10-3}

inc(k2); {увеличиваем k на 1}

step:=step*c; {считаем степень (-1) при k2}

slag:=step*cos(k2*x)/k2; {считаем очередное слагаемое функции}

f2_2:=f2_2+slag; {прибавляем к общей сумме полученное слагаемое}

until abs(slag)<=eps2; {выходим из цикла, когда слагаемое становится меньше точности 10-3}

f2_3:=f2_2;

k3:=k2;

repeat {итерационный цикл для точности 10-4 }

inc(k3); {увеличиваем k на 1}

step:=step*c; {считаем степень (-1) при k3}

slag:=step*cos(k3*x)/k3; {считаем очередное слагаемое функции}

f2_3:=f2_3+slag; {прибавляем к общей сумме полученное слагаемое}

until abs(slag)<=eps3; {выходим из цикла, когда слагаемое становится меньше точности 10-4 }

writeln('| ',x:5:2,' | ',f1:2:7,' | ',f2_1:2:2,' | ',k1:5,' | ',f2_2:2:3,' | ',k2:5,' | ',f2_3:2:4,' | ',k3:5,' |'); {вывод на экран очередной строки таблицы}

writeln('|_______|___________|______|_______|_______|_______|________|_______|'); {подчеркиваем строку таблицы линией}

x:=x+b; {увеличиваем значение аргумента на шаг}

end;

readkey;

end.

4) Результат работы программы

x

f1(x)

e=0.01

e=0.001

e=0.0001

f2(x)

N

f2(x)

N

f2(x)

N

-0.60

0.6474555

0.64

13

0.652

34

0.6464

144

-0.55

0.6548482

0.65

20

0.657

60

0.6544

277

-0.50

0.6615661

0.67

16

0.656

22

0.6611

267

-0.45

0.6676182

0.67

24

0.667

108

0.6670

178

-0.40

0.6730124

0.70

4

0.671

51

0.6724

161

-0.35

0.6777559

0.68

22

0.678

94

0.6782

175

-0.30

0.6818547

0.67

16

0.681

47

0.6810

89

-0.25

0.6853143

0.69

19

0.684

44

0.6855

245

-0.20

0.6881388

0.70

8

0.689

55

0.6878

165

-0.15

0.6903320

0.69

10

0.691

73

0.6905

157

-0.10

0.6918967

0.69

15

0.692

47

0.6916

110

-0.05

0.6928346

0.70

27

0.693

31

0.6928

157

0.00

0.6931472

0.69

100

0.693

1000

0.6931

10000

0.05

0.6928346

0.70

27

0.693

31

0.6928

157

0.10

0.6918967

0.69

15

0.692

47

0.6916

110

0.15

0.6903320

0.69

10

0.691

73

0.6905

157

0.20

0.6881388

0.70

8

0.689

55

0.6878

165

0.25

0.6853143

0.69

19

0.684

44

0.6855

245

0.30

0.6818547

0.67

16

0.681

47

0.6810

89

0.35

0.6777559

0.68

22

0.678

94

0.6782

175

Да

Да

Рис. 1 Схема алгоритма по ГОСТ 19. 701-90

5) Описание схемы алгоритма

Начало и конец алгоритма отображаем с помощью символа «Терминатор».

Для перехода алгоритма на другую и страницу и удобства отображения используем символы-переносы.

  • Вводятся константы, с помощью символа «Данные».

  • Начальному значению x присваиваем значение a, используем символ «Процесс».

  • Переменной I присваиваем начальное значение 1, используем символ «Процесс».

  • Цикл «For - to - do» для переменной I, используем символ «Условие» (I<=20).

  • В этом цикле выполняем:

      • Считаем f1, присваиваем k начальное значение 1, переменной step (для подсчета степени (-1)) присваиваем начальное значение 1, f2_1 считаем для k=1, используем символ «Процесс»

      • Входим в цикл «repeat». Тело цикла содержит в себе: увеличение k на 1, подсчет очередной степени (-1), подсчет очередного слагаемого, прибавление слагаемого в общей сумме. Тело цикла изображаем с помощью символа «Процесс», а условие, при котором происходит выход из цикла – с помощью символа «Условие». Условие: точность 10-2.

      • Значению f2_2 присваиваем значение f2_1, а значению k2 присваиваем значение k1. Используем символ «Процесс».

      • Входим в цикл «repeat». Тело цикла содержит в себе: увеличение k на 1, подсчет очередной степени (-1), подсчет очередного слагаемого, прибавление слагаемого в общей сумме. Тело цикла изображаем с помощью символа «Процесс», а условие, при котором происходит выход из цикла – с помощью символа «Условие». Условие: точность 10-3.

      • Значению f2_3 присваиваем значение f2_2, а значению k1 присваиваем значение k2. Используем символ «Процесс».

      • Входим в цикл «repeat». Тело цикла содержит в себе: увеличение k на 1, подсчет очередной степени (-1), подсчет очередного слагаемого, прибавление слагаемого в общей сумме. Тело цикла изображаем с помощью символа «Процесс», а условие, при котором происходит выход из цикла – с помощью символа «Условие». Условие: точность 10-4.

      • Вывод очередной строки таблицы. Используем символ «Данные».

      • Увеличиваем x на размер шага, используем символ «Процесс».

      • Увеличиваем I на 1 (используем символ «Процесс») для перехода к началу основного цикла и подсчета следующей строки таблицы.

  • Конец алгоритма.