Лабораторная работа № 1 вариант № 4
.docxБЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра программного обеспечения информационных технологий
Факультет ЗВиДО
Специальность ПОИТ
Лабораторная работа № 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