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

ИПР1 часть 1, вариант 11

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

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

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

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

  

  

 

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

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

  

 

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

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

часть 1

Вариант № 11

 

  

Выполнила:

 

  

 

Минск 2012

1). Задание

Для аргумента , изменяющегося от –0.6 с шагом 0.05 вычислить 20 значений функций:

 

Функцию f2(x) вычислить для ряда точностей . Для указанных точностей определить количество N элементов ряда, суммируемых для достижения заданной точности. Результаты расчетов свести в следующую таблицу:

 

x

f1(x)

f2(x)

N

f2(x)

N

f2(x)

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

….

 

 

 

 

 

 

 

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

На рис. 1 приведен способ графического представления алгоритма.

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

3). Программа на языке Pascal

Далее приведена программа на языке Pascal, также данная программа хранится в файле IPR1.pas

Program IPR1;

Uses CRT;

Const

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

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

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

b=0.05; {шаг}

x0=-0.6; {начальное значение X}

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

Var

a,k1,k2,k3:integer;

i:integer; {счетчик шагов}

Y,f1,f2,f2_1,f2_2,f2_3,S,x:real;

Begin

ClrScr;

TextColor(0);

TextBackGround(15);

ClrScr;

{Рисуем шапку таблицы}

writeln('__________________________________________________________');

writeln('| | | eps=0.01 | eps=0.001 | eps=0.0001 |');

writeln('| | |____________________________________________|');

writeln('| x | f1(x) | f2(x) | N | f2(x) | N | f2(x) | N |');

writeln('|____|________|_________|_____|__________|____|__________|____|');

x:=x0; {начальное значение X}

For i:=1 to N do

begin

f1:=sin(x)-(x/2)*(1+cos(x))-sin(x)*ln(abs(2*cos(x/2)));{вычисляется

значение функции f1}

{вычисляется значение функции f2}

k1:=0;

f2_1:=0;

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

begin

inc(k1);

if ((k1 mod 2)=0) then

a:=1

else a:=-1;

Y:=x*a*sin(k1+1)/(k1*(k1+1)); {считается очередное слагаемое}

f2_1:=f2_1+Y; {считаем значение функции f2_1}

end

until abs(Y)<=eps1; {выход из цикла, когда слагаемое становится

меньше точности eps1}

k2:=k1;

f2_2:=f2_1;

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

begin

inc(k2);

if ((k2 mod 2)=0) then

a:=1

else a:=-1;

Y:=x*a*sin(k2+1)/(k2*(k2+1)); {считается очередное слагаемое}

f2_2:=f2_2+Y; {считаем значение функции f2_2}

end

until abs(Y)<=eps2; {выход из цикла, когда слагаемое становится

меньше точности eps2}

k3:=k2;

f2_3:=f2_2;

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

begin

inc(k3);

if ((k3 mod 2)=0) then

a:=1

else a:=-1;

Y:=x*a*sin(k3+1)/(k3*(k3+1));{считается очередное слагаемое}

f2_3:=f2_3+Y; {считаем значение функции f2_3}

end

until abs(Y)<=eps3; {выход из цикла, когда слагаемое становится

меньше точности eps3}

{вывод результатов}

writeln('|',x:5:2,'|',f1:12:9,'|',f2_1:9:2,'|',k1:3,'|',f2_2:8:3,'|',

k2:3,'|', f2_3:8:4,'|',k3:3,'|');

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

end;

{завершение таблицы}

writeln('__________________________________________________________');

readln

end.

4).Итоговая таблица

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

  1. Объявляем переменные;

  2. Переменной Х присваиваем начальное значение в соответствии с условием задачи;

  3. Рисуем шапку таблицы;

  4. Начинаем «цикл со счетчиком с шагом 1» от единицы до двадцати. Как только счетчик превысит двадцать, выполнение цикла прекращается и мы переходим к п.30;

  5. Вычисляем значение функции f1;

  6. Присваиваем начальные значения переменным для вычисления функции f2 (далее – f2_1, f2_2, f2_3) для точностей eps1, eps2, eps3 соответственно: счетчику количества слагаемых k1 (равен «0»), функции f2_1 (равна «0»);

  7. Начинаем итерационный цикл для точности eps1;

  8. Увеличиваем счетчик количества слагаемых k1 на единицу;

  9. Проверяем к1 на четность. Если к1 является четным числом, то множитель а равен «1», иначе – «-1»;

  10. Считаем очередное слагаемое;

  11. Считаем значение функции f2_1;

  12. Проверяем условие итерационного цикла для точности eps1. Пока очередное слагаемое больше eps1, повторяем выполнение пунктов, начиная с п.8. В противном случае переходим к следующему пункту;

  13. Присваиваем счетчику числа слагаемых k2 и функции f2_2 значения k1 и f2_1 соответственно, полученные в предыдущем итерационном цикле;

  14. Начинаем итерационный цикл для точности eps2;

  15. Увеличиваем счетчик количества слагаемых k2 на единицу;

  16. Проверяем к2 на четность. Если к2 является четным числом, то множитель а равен «1», иначе – «-1»;

  17. Считаем очередное слагаемое;

  18. Считаем значение функции f2_2;

  19. Проверяем условие итерационного цикла для точности eps2. Пока очередное слагаемое больше eps2, повторяем выполнение пунктов, начиная с п.15. В противном случае переходим к следующему пункту;

  20. Присваиваем счетчику числа слагаемых k3 и функции f2_3 значения k2 и f2_2 соответственно, полученные в предыдущем итерационном цикле;

  21. Начинаем итерационный цикл для точности eps3;

  22. Увеличиваем счетчик количества слагаемых k3 на единицу;

  23. Проверяем к3 на четность. Если к3 является четным числом, то множитель а равен «1», иначе – «-1»;

  24. Считаем очередное слагаемое;

  25. Считаем значение функции f2_3;

  26. Проверяем условие итерационного цикла для точности eps3. Пока очередное слагаемое больше eps3, повторяем выполнение пунктов, начиная с п.22. В противном случае переходим к следующему пункту;

  27. Выводим результаты в таблице;

  28. Вычисляем следующее значение переменной Х;

  29. Возвращаемся в п.4;

  30. Завершаем таблицу.