
06.06.2008, 18:21
|
|
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме: 422909
Репутация:
200
|
|
2Catsy
помогите пожалуйста
(паскаль)
1) сумма с точностью
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
2) рекурсия
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
Вычисление выражения под знаком суммы выполнить через рекурсию.
Эх студент...
Код:
var
Sx,e:real;
x:integer;
k:word;
function Factorial(n: Word): Int64;
var
f: Int64;
i: Integer;
begin
f := 1;
for i := 2 to n do
f := f * i;
Factorial := f;
end;
function Degree(x: real;y:word): real;
begin
if (x=0) then begin
Degree:=0;
end
else begin
Degree:=Exp(y*Ln(abs(x)));
if (x<0) and (y mod 2<>0) then begin
Degree:=(-1)*Exp(y*Ln(abs(x)));
end;
end;
end;
function RecursiveSum(x:integer;e:real):real;
begin
sx:=sx+(Degree((-1),k)*Degree((x/2),2*k+1))/(Factorial(k)*Factorial(k+1));
if Abs(Sx)<e then
RecursiveSum(x,e);
RecursiveSum:=Sx;
end;
begin
ClrScr;
Sx:=0;
k:=0;
write('Vvedite x (x!=0) : ');readln(x);
write('Vvedite e (e>0) : ');readln(e);
if (e<=0) or (x=0) then
begin
writeln('Error!');
writeln('Press any key to exit...');
readln;
exit;
end;
writeln('****************************');
writeln('1) Summa s tochnostju e:');
writeln;
while abs(Sx)<e do
begin
sx:=sx+(Degree(-1,k)*Degree(x,4*k+1))/(Factorial(2*k)*(4*k+1));
k:=k+1;
end;
writeln(Sx);
writeln;
writeln('****************************');
writeln('2) Recursiya s tochnostju e:');
writeln;
Sx:=0;
k:=0;
Sx:=RecursiveSum(x,e);
Writeln(Sx);
writeln;
readln;
|
|
|