2.4 Описание переменных.
Имя переменной | Тип переменной | Значение |
K | integer | Номер члена ряда |
number | integer | Порядковый номер |
A | real | Начало интервала |
B | real | Конец интервала |
H | Шаг интервала | |
E | Точность | |
X | Текущее значение аргумента | |
у | Значение члена ряда | |
f | Значение функции для текущего аргумента |
2.5 Схема алгоритма.
таблицы значений функции,
заданной в виде разложения в ряд.
точность E (E>0)
и шаг изменения аргумента H (H>0)
ДА
нет
да
нет2.5.1 Схема алгоритма процедуры Table_begin
2.5.2 Схема алгоритма процедуры Table_end
2.6 Текст программы.
Program kkr1_2;
procedure Table_begin;
begin
writeln(' ----------------------------------------------------------------------------------');
writeln(' ¦Номер¦ X ¦ f(x) ¦ Номер члена ряда ¦');
writeln(' ----------------------------------------------------------------------------------');
end;
procedure Table_end;
begin
writeln(' ----------------------------------------------------------------------------------');
end;
var
K,number:integer;
A,B,H,E,X,y,f:real;
begin
Writeln ('Программа предназначена для вычисления таблицы значений функции, ');
writeln ('заданной в виде разложения в ряд.');
Writeln;
{------------------------------------------------------------------------}
{Ввод данных}
writeln('Введите границы интервала [A,B] ( причем (A<B) ); точность E (E>0)');
writeln('и шаг изменения аргумента H (H>0)');
writeln;
repeat
begin
writeln('Начало интервала A: '); readln(A);
writeln('Конец интервала B: '); readln(B);
if not (A<B) then writeln ('A должно быть меньше B !. Повторите ввод.');
end;
until (A<B);
repeat
begin
writeln('Точность E: '); readln(E);
if not (E>0) then writeln ('E должно быть больше 0 !. Повторите ввод.');
end;
until (E>0);
repeat
begin
writeln('Шаг H: ');readln(H);
if not (H>0) then writeln ('H должно быть больше 0 !. Повторите ввод.');
end;
until (H>0);
{------------------------------------------------------------------------}
writeln('Вы ввели: ');
writeln('A=',A:1:5, ' B=',B:1:5,' H=',H:1:5,' E=',E:1:5);
writeln;
{------------------------------------------------------------------------}
X:=A;
number:=0;
Table_begin;
repeat
k:=0;
y:=(cos(2*x))/3;
f:=0;
inc(number);
repeat
inc(k);
y:=y*cos(2*(k+1)*x)*(2*k-1)/((2*k+3)*cos(2*k*x));
f:=f+y;
until (abs(y)<E);
if (number mod 18)=0 then
begin
Table_end;
Table_begin;
end;
writeln(' ¦',number:5,'¦', X:20:13,' ¦ ',(4/Pi)*(0.5-f):16:13, ' ¦ ' ,k:7,' ¦');
X:=X+H;
until not (X<B);
Table_end;
end.
2.7 Инструкция пользователю.
После запуска программы, она сообщит, что предназначена для составления таблицы значений функции на определенном интервале и попросит ввести значения, необходимые для составления таблицы. К таким значениям относятся начало и конец интервала, шаг изменения аргумента , точность вычислений. Не стоит вводить слишком больших значений (либо слишком маленькую точность), так как тогда время работы программы сильно увеличится.