Задача 1. ВЫЧИСЛЕНИЕ ФУНКЦИИ НА ОТРЕЗКЕ
Для функции, представленной ниже бесконечным рядом, вычислить её приближенное значение с заданной точностью e=10^-3 на отрезке [0,1] (или другом единичном отрезке, например, [2,3] в зависимости от ограничений, накладываемых на величину аргумента функции) с постоянным шагом 0.1. Вычисление функции в точке производится соответствующей функции. Ввод и вывод информации осуществляется с помощью соответствующих стандартных устройств.
(* ‚Вычисление функции на единичном отрезке [a,b], где b=a+1.
z[i] = a + 0.1*i *)
program ZADACHA1;
var i,j:integer;
a,ak:integer;
n:integer;
z:array[1..10] of real;
chi:array[1..10] of real;
gamma:real;
wrk:string;
function mnogZ(mn:integer): integer;
begin
if (mn = 1) then
mnogZ := 1
else
mnogZ := mn * mnogZ(mn-1);
end;
function under_lim(z:real): integer;
var
h1:real;
h2:real;
eps:real;
md:real;
begin
eps := 0.001;
h1 := 1;
h2 := 0;
md := 1;
while(md >= 1) do
begin
h2 := z*exp(1)/(2*exp(1/(2*h1+4)*ln(eps))) - 1;
md := abs(h1-h2);
h1 := h2;
end;
under_lim := round(h2);
end;
begin
writeln(' Введите начало единичного отрезка: ');
readln(a);
ak := a;
gamma := 0.5772156649;
writeln('');
writeln(' ['результат вычисления функции на отрезке,ak,',',ak + 1,'] с шагом 0.1:');
writeln('');
for i:=1 to 10 do
begin
z[i] := a + 0.1 * i;
n := under_lim(z[i]);
chi[i] := gamma + ln(z[i]);
for j:=1 to n do
begin
chi[i] := chi[i] + (exp(2*j*ln(z[i])))/(2*j*mnogZ(2*j));
end;
if (i < 10) then
writeln('При z = ',ak,'.',i,' значение функции равно',chi[i],';')
else
writeln('При z = ',ak+1,' значение функции равно',chi[i],';');
end;
writeln('');
writeln('„Для завершения просмотра нажмите клавишу "ввод".');
readln(wrk);
end.