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

Лабораторная работа № 1 вариант № 4

.docx
Скачиваний:
23
Добавлен:
01.04.2014
Размер:
125.32 Кб
Скачать

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

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

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

Факультет ЗВиДО

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

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

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

часть 1

Вариант № 4

Выполнил: Куриленко А.Е.

Минск 2012

1. Задание

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

= -0.600648

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

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

{Вычислить 20 значений функций для аргумента Х, изменяющегося

от -0.6 с шагом 0.05. Разработчик - Куриленко А.Е. 22.05.2012г.}

Program Func;

{Описания}

{$N+}

Uses Crt;

Const

eps1=0.01;

eps2=0.001;

eps3=0.0001;

a=-0.6;

b=0.05;

N=20;

Var

k1, k2, k3, i, j, k1_1, k2_1, k3_1:integer;

f1, f2_1, f2_2, f2_3, x, vs, pow, fact: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:=(((exp(x)-exp(-x))/2)+sin(x))/2; {Вычисление функции}

k1:=-1; {Начальное значение количества элементов ряда}

f2_1:=0; {Начальное значение функции f2}

repeat {Начало цикла вычисления функции f2}

begin

inc(k1); {Увеличение значения количества элементов ряда на единицу}

fact:=1; {Начальное значение знаменателя}

k1_1:=k1*4+1;

for j:=2 to k1_1 do {Цикл для вычисления знаменателя}

begin

fact:=fact*j;

end;

{Вычисление числителя в зависимости от значения х}

if (x<0)

then pow:=-1*exp(ln(abs(x))*k1_1) else

if (x>0)

then pow:=exp(ln(abs(x))*k1_1) else

pow:=0;

vs:=pow/fact; {Вычисление элемента ряда}

f2_1:=f2_1+vs; { }

end;

until abs(vs)<=eps1; {Выход из цикла по выполнению условия}

{Выполнение тех же действий для точностей eps2, eps3}

f2_2:=f2_1;

k2:=k1;

repeat

begin

inc(k2);

fact:=1;

k2_1:=k2*4+1;

for j:=2 to k2_1 do

begin

fact:=fact*j;

end;

if (x<0)

then pow:=-1*exp(ln(abs(x))*k2_1) else

if (x>0)

then pow:=exp(ln(abs(x))*k2_1) else

pow:=0;

vs:=pow/fact;

f2_2:=f2_2+vs;

end;

until abs(vs)<=eps2;

f2_3:=f2_2;

k3:=k2;

repeat

begin

inc(k3);

fact:=1;

k3_1:=k3*4+1;

for j:=2 to k3_1 do

begin

fact:=fact*j;

end;

if (x<0)

then pow:=-1*exp(ln(abs(x))*k3_1) else

if (x>0)

then pow:=exp(ln(abs(x))*k3_1) else

pow:=0;

vs:=pow/fact;

f2_3:=f2_3+vs;

end;

until abs(vs)<=eps3;

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

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

' |',k2,' |',f2_3:7:4,'|',k3,' |');

x:=x+b; {Приращение значения x на величину b}

end;

write('--------------------------------------------------------------');

readkey;

End.

3. Результаты работы программы.

x

f1(x)

e=0.01

e=0.001

e=0.0001

f2(x)

N

f2(x)

N

f2(x)

N

-0,60

-0,600648028

-0,60

1

-0,601

2

-0,6006

3

-0,55

-0,550419416

-0,55

1

-0,550

2

-0,5504

3

-0,50

-0.500260422

-0,50

1

-0,500

2

-0,5003

3

-0,45

-0.450153776

-0,45

1

-0,450

2

-0,4502

3

-0,40

-0.400085334

-0,40

1

-0,400

2

-0,4001

3

-0,35

-0.350043768

-0,35

1

-0,350

2

-0,3500

3

-0,30

-0.300020250

-0,30

1

-0,300

2

-0,3000

3

-0,25

-0.250008138

-0,25

1

-0,250

2

-0,2500

3

-0,20

-0.200002667

-0,20

1

-0,200

2

-0,2000

3

-0,15

-0.150000633

-0,15

1

-0,150

2

-0,1500

3

-0,10

-0.100000083

-0,10

1

-0,100

2

-0,1000

3

-0,05

-0.050000003

-0,05

1

-0,050

2

-0,0500

3

0,00

0.000000000

0,00

0

0,000

1

0,0000

2

0,05

0.050000003

0,05

1

0,050

2

0,0500

3

0,1

0.100000083

0,10

1

0,100

2

0,1000

3

0,15

0.150000633

0,15

1

0,150

2

0,1500

3

0,20

0.200002667

0,20

1

0,200

2

0,2000

3

0,25

0.250008138

0,25

1

0,250

2

0,2500

3

0,30

0.300020250

0,30

1

0,300

2

0,3000

3

0,35

0.350043768

0,35

1

0,350

2

0,3500

3

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

1) Вводим условия задачи (a, b, N, eps1, eps2, eps3)

2) Выполняем цикл I:=1 To 20 для пошагового вычисления значений функций

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

4) Увеличение значения количества элементов ряда на единицу

5) Выполняем цикл j:=2 To k1_1 для вычисления знаменателя

6) Вычисление числителя в зависимости от значения х.

7) Вычисление элемента ряда vs

8) Вычисление значений функции f2

9) Выполняем вычисления в цикле, до тех пор пока не выполнится условие Abs(vs)<=eps1.

10) Для точностей eps2, eps3 – повторяем пункты 4 – 9.

11) Выводим результаты x, f1, f2, N.

12) Приращение значения x на величину b.

Ввод условия задачи (a, b, N, eps1, eps2, eps3)

I=1 to N

f1:=(((exp(x)-exp(-x))/2)+sin(x))/2

да

нет

да

нет

pow:=exp(ln(abs(x))**k1_1)

f2_1:=f2_1+vs

until abs(vs)<=eps1

да

нет

f2_2:=f2_2+vs

until abs(vs)<=eps2

да

нет

pow:=exp(ln(abs(x))**k2_1)

да

нет

pow:=exp(ln(abs(x))**k3_1)

да

нет

f2_2:=f2_2+vs

until abs(vs)<=eps2

Вывод x, f1, f2_1, f2_2, f2_3, N

x:=x+b